import numpy as np
import torch
import torch.nn as nn
import torch.nn.functional as F
import math

__weights_dict = dict()


def load_weights(weight_file):
    if weight_file == None:
        return
    try:
        weights_dict = np.load(weight_file).item()
    except:
        weights_dict = np.load(weight_file, encoding='bytes').item()

    return weights_dict


class KitModel(nn.Module):

    def __init__(self, weight_file):
        super(KitModel, self).__init__()
        global __weights_dict
        __weights_dict = load_weights(weight_file)

        self.conv1_3x3_s2 = self.__conv(2, name='conv1_3x3_s2', in_channels=3, out_channels=32, kernel_size=(3L, 3L),
                                        stride=(2L, 2L), groups=1, bias=False)
        self.conv1_3x3_s2_bn = self.__batch_normalization(2, 'conv1_3x3_s2_bn', num_features=32, eps=0.0010000000475,
                                                          momentum=0.0)
        self.conv2_3x3_s1 = self.__conv(2, name='conv2_3x3_s1', in_channels=32, out_channels=32, kernel_size=(3L, 3L),
                                        stride=(1L, 1L), groups=1, bias=False)
        self.conv2_3x3_s1_bn = self.__batch_normalization(2, 'conv2_3x3_s1_bn', num_features=32, eps=0.0010000000475,
                                                          momentum=0.0)
        self.conv3_3x3_s1 = self.__conv(2, name='conv3_3x3_s1', in_channels=32, out_channels=64, kernel_size=(3L, 3L),
                                        stride=(1L, 1L), groups=1, bias=False)
        self.conv3_3x3_s1_bn = self.__batch_normalization(2, 'conv3_3x3_s1_bn', num_features=64, eps=0.0010000000475,
                                                          momentum=0.0)
        self.inception_stem1_3x3_s2 = self.__conv(2, name='inception_stem1_3x3_s2', in_channels=64, out_channels=96,
                                                  kernel_size=(3L, 3L), stride=(2L, 2L), groups=1, bias=False)
        self.inception_stem1_3x3_s2_bn = self.__batch_normalization(2, 'inception_stem1_3x3_s2_bn', num_features=96,
                                                                    eps=0.0010000000475, momentum=0.0)
        self.inception_stem2_1x7_reduce = self.__conv(2, name='inception_stem2_1x7_reduce', in_channels=160,
                                                      out_channels=64, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                      bias=False)
        self.inception_stem2_3x3_reduce = self.__conv(2, name='inception_stem2_3x3_reduce', in_channels=160,
                                                      out_channels=64, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                      bias=False)
        self.inception_stem2_1x7_reduce_bn = self.__batch_normalization(2, 'inception_stem2_1x7_reduce_bn',
                                                                        num_features=64, eps=0.0010000000475,
                                                                        momentum=0.0)
        self.inception_stem2_3x3_reduce_bn = self.__batch_normalization(2, 'inception_stem2_3x3_reduce_bn',
                                                                        num_features=64, eps=0.0010000000475,
                                                                        momentum=0.0)
        self.inception_stem2_1x7 = self.__conv(2, name='inception_stem2_1x7', in_channels=64, out_channels=64,
                                               kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_stem2_3x3 = self.__conv(2, name='inception_stem2_3x3', in_channels=64, out_channels=96,
                                               kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_stem2_1x7_bn = self.__batch_normalization(2, 'inception_stem2_1x7_bn', num_features=64,
                                                                 eps=0.0010000000475, momentum=0.0)
        self.inception_stem2_3x3_bn = self.__batch_normalization(2, 'inception_stem2_3x3_bn', num_features=96,
                                                                 eps=0.0010000000475, momentum=0.0)
        self.inception_stem2_7x1 = self.__conv(2, name='inception_stem2_7x1', in_channels=64, out_channels=64,
                                               kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_stem2_7x1_bn = self.__batch_normalization(2, 'inception_stem2_7x1_bn', num_features=64,
                                                                 eps=0.0010000000475, momentum=0.0)
        self.inception_stem2_3x3_2 = self.__conv(2, name='inception_stem2_3x3_2', in_channels=64, out_channels=96,
                                                 kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_stem2_3x3_2_bn = self.__batch_normalization(2, 'inception_stem2_3x3_2_bn', num_features=96,
                                                                   eps=0.0010000000475, momentum=0.0)
        self.inception_stem3_3x3_s2 = self.__conv(2, name='inception_stem3_3x3_s2', in_channels=192, out_channels=192,
                                                  kernel_size=(3L, 3L), stride=(2L, 2L), groups=1, bias=False)
        self.inception_stem3_3x3_s2_bn = self.__batch_normalization(2, 'inception_stem3_3x3_s2_bn', num_features=192,
                                                                    eps=0.0010000000475, momentum=0.0)
        self.inception_a1_3x3_reduce = self.__conv(2, name='inception_a1_3x3_reduce', in_channels=384, out_channels=64,
                                                   kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a1_1x1_2 = self.__conv(2, name='inception_a1_1x1_2', in_channels=384, out_channels=96,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a1_3x3_2_reduce = self.__conv(2, name='inception_a1_3x3_2_reduce', in_channels=384,
                                                     out_channels=64, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                     bias=False)
        self.inception_a1_3x3_reduce_bn = self.__batch_normalization(2, 'inception_a1_3x3_reduce_bn', num_features=64,
                                                                     eps=0.0010000000475, momentum=0.0)
        self.inception_a1_1x1_2_bn = self.__batch_normalization(2, 'inception_a1_1x1_2_bn', num_features=96,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_a1_1x1 = self.__conv(2, name='inception_a1_1x1', in_channels=384, out_channels=96,
                                            kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a1_3x3_2_reduce_bn = self.__batch_normalization(2, 'inception_a1_3x3_2_reduce_bn',
                                                                       num_features=64, eps=0.0010000000475,
                                                                       momentum=0.0)
        self.inception_a1_1x1_bn = self.__batch_normalization(2, 'inception_a1_1x1_bn', num_features=96,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_a1_3x3 = self.__conv(2, name='inception_a1_3x3', in_channels=64, out_channels=96,
                                            kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a1_3x3_2 = self.__conv(2, name='inception_a1_3x3_2', in_channels=64, out_channels=96,
                                              kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a1_3x3_bn = self.__batch_normalization(2, 'inception_a1_3x3_bn', num_features=96,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_a1_3x3_2_bn = self.__batch_normalization(2, 'inception_a1_3x3_2_bn', num_features=96,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_a1_3x3_3 = self.__conv(2, name='inception_a1_3x3_3', in_channels=96, out_channels=96,
                                              kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a1_3x3_3_bn = self.__batch_normalization(2, 'inception_a1_3x3_3_bn', num_features=96,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_a2_1x1_2 = self.__conv(2, name='inception_a2_1x1_2', in_channels=384, out_channels=96,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a2_3x3_reduce = self.__conv(2, name='inception_a2_3x3_reduce', in_channels=384, out_channels=64,
                                                   kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a2_3x3_2_reduce = self.__conv(2, name='inception_a2_3x3_2_reduce', in_channels=384,
                                                     out_channels=64, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                     bias=False)
        self.inception_a2_1x1_2_bn = self.__batch_normalization(2, 'inception_a2_1x1_2_bn', num_features=96,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_a2_3x3_reduce_bn = self.__batch_normalization(2, 'inception_a2_3x3_reduce_bn', num_features=64,
                                                                     eps=0.0010000000475, momentum=0.0)
        self.inception_a2_1x1 = self.__conv(2, name='inception_a2_1x1', in_channels=384, out_channels=96,
                                            kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a2_3x3_2_reduce_bn = self.__batch_normalization(2, 'inception_a2_3x3_2_reduce_bn',
                                                                       num_features=64, eps=0.0010000000475,
                                                                       momentum=0.0)
        self.inception_a2_1x1_bn = self.__batch_normalization(2, 'inception_a2_1x1_bn', num_features=96,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_a2_3x3 = self.__conv(2, name='inception_a2_3x3', in_channels=64, out_channels=96,
                                            kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a2_3x3_2 = self.__conv(2, name='inception_a2_3x3_2', in_channels=64, out_channels=96,
                                              kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a2_3x3_bn = self.__batch_normalization(2, 'inception_a2_3x3_bn', num_features=96,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_a2_3x3_2_bn = self.__batch_normalization(2, 'inception_a2_3x3_2_bn', num_features=96,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_a2_3x3_3 = self.__conv(2, name='inception_a2_3x3_3', in_channels=96, out_channels=96,
                                              kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a2_3x3_3_bn = self.__batch_normalization(2, 'inception_a2_3x3_3_bn', num_features=96,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_a3_3x3_reduce = self.__conv(2, name='inception_a3_3x3_reduce', in_channels=384, out_channels=64,
                                                   kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a3_1x1_2 = self.__conv(2, name='inception_a3_1x1_2', in_channels=384, out_channels=96,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a3_3x3_2_reduce = self.__conv(2, name='inception_a3_3x3_2_reduce', in_channels=384,
                                                     out_channels=64, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                     bias=False)
        self.inception_a3_3x3_reduce_bn = self.__batch_normalization(2, 'inception_a3_3x3_reduce_bn', num_features=64,
                                                                     eps=0.0010000000475, momentum=0.0)
        self.inception_a3_1x1_2_bn = self.__batch_normalization(2, 'inception_a3_1x1_2_bn', num_features=96,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_a3_3x3_2_reduce_bn = self.__batch_normalization(2, 'inception_a3_3x3_2_reduce_bn',
                                                                       num_features=64, eps=0.0010000000475,
                                                                       momentum=0.0)
        self.inception_a3_1x1 = self.__conv(2, name='inception_a3_1x1', in_channels=384, out_channels=96,
                                            kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a3_1x1_bn = self.__batch_normalization(2, 'inception_a3_1x1_bn', num_features=96,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_a3_3x3 = self.__conv(2, name='inception_a3_3x3', in_channels=64, out_channels=96,
                                            kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a3_3x3_2 = self.__conv(2, name='inception_a3_3x3_2', in_channels=64, out_channels=96,
                                              kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a3_3x3_bn = self.__batch_normalization(2, 'inception_a3_3x3_bn', num_features=96,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_a3_3x3_2_bn = self.__batch_normalization(2, 'inception_a3_3x3_2_bn', num_features=96,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_a3_3x3_3 = self.__conv(2, name='inception_a3_3x3_3', in_channels=96, out_channels=96,
                                              kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a3_3x3_3_bn = self.__batch_normalization(2, 'inception_a3_3x3_3_bn', num_features=96,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_a4_1x1_2 = self.__conv(2, name='inception_a4_1x1_2', in_channels=384, out_channels=96,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a4_3x3_2_reduce = self.__conv(2, name='inception_a4_3x3_2_reduce', in_channels=384,
                                                     out_channels=64, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                     bias=False)
        self.inception_a4_3x3_reduce = self.__conv(2, name='inception_a4_3x3_reduce', in_channels=384, out_channels=64,
                                                   kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a4_1x1_2_bn = self.__batch_normalization(2, 'inception_a4_1x1_2_bn', num_features=96,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_a4_3x3_2_reduce_bn = self.__batch_normalization(2, 'inception_a4_3x3_2_reduce_bn',
                                                                       num_features=64, eps=0.0010000000475,
                                                                       momentum=0.0)
        self.inception_a4_3x3_reduce_bn = self.__batch_normalization(2, 'inception_a4_3x3_reduce_bn', num_features=64,
                                                                     eps=0.0010000000475, momentum=0.0)
        self.inception_a4_1x1 = self.__conv(2, name='inception_a4_1x1', in_channels=384, out_channels=96,
                                            kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a4_1x1_bn = self.__batch_normalization(2, 'inception_a4_1x1_bn', num_features=96,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_a4_3x3_2 = self.__conv(2, name='inception_a4_3x3_2', in_channels=64, out_channels=96,
                                              kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a4_3x3 = self.__conv(2, name='inception_a4_3x3', in_channels=64, out_channels=96,
                                            kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a4_3x3_2_bn = self.__batch_normalization(2, 'inception_a4_3x3_2_bn', num_features=96,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_a4_3x3_bn = self.__batch_normalization(2, 'inception_a4_3x3_bn', num_features=96,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_a4_3x3_3 = self.__conv(2, name='inception_a4_3x3_3', in_channels=96, out_channels=96,
                                              kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_a4_3x3_3_bn = self.__batch_normalization(2, 'inception_a4_3x3_3_bn', num_features=96,
                                                                eps=0.0010000000475, momentum=0.0)
        self.reduction_a_3x3_2_reduce = self.__conv(2, name='reduction_a_3x3_2_reduce', in_channels=384,
                                                    out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                    bias=False)
        self.reduction_a_3x3 = self.__conv(2, name='reduction_a_3x3', in_channels=384, out_channels=384,
                                           kernel_size=(3L, 3L), stride=(2L, 2L), groups=1, bias=False)
        self.reduction_a_3x3_2_reduce_bn = self.__batch_normalization(2, 'reduction_a_3x3_2_reduce_bn',
                                                                      num_features=192, eps=0.0010000000475,
                                                                      momentum=0.0)
        self.reduction_a_3x3_bn = self.__batch_normalization(2, 'reduction_a_3x3_bn', num_features=384,
                                                             eps=0.0010000000475, momentum=0.0)
        self.reduction_a_3x3_2 = self.__conv(2, name='reduction_a_3x3_2', in_channels=192, out_channels=224,
                                             kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.reduction_a_3x3_2_bn = self.__batch_normalization(2, 'reduction_a_3x3_2_bn', num_features=224,
                                                               eps=0.0010000000475, momentum=0.0)
        self.reduction_a_3x3_3 = self.__conv(2, name='reduction_a_3x3_3', in_channels=224, out_channels=256,
                                             kernel_size=(3L, 3L), stride=(2L, 2L), groups=1, bias=False)
        self.reduction_a_3x3_3_bn = self.__batch_normalization(2, 'reduction_a_3x3_3_bn', num_features=256,
                                                               eps=0.0010000000475, momentum=0.0)
        self.inception_b1_1x1_2 = self.__conv(2, name='inception_b1_1x1_2', in_channels=1024, out_channels=384,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b1_1x7_reduce = self.__conv(2, name='inception_b1_1x7_reduce', in_channels=1024,
                                                   out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                   bias=False)
        self.inception_b1_7x1_2_reduce = self.__conv(2, name='inception_b1_7x1_2_reduce', in_channels=1024,
                                                     out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                     bias=False)
        self.inception_b1_1x1_2_bn = self.__batch_normalization(2, 'inception_b1_1x1_2_bn', num_features=384,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b1_1x7_reduce_bn = self.__batch_normalization(2, 'inception_b1_1x7_reduce_bn', num_features=192,
                                                                     eps=0.0010000000475, momentum=0.0)
        self.inception_b1_7x1_2_reduce_bn = self.__batch_normalization(2, 'inception_b1_7x1_2_reduce_bn',
                                                                       num_features=192, eps=0.0010000000475,
                                                                       momentum=0.0)
        self.inception_b1_1x1 = self.__conv(2, name='inception_b1_1x1', in_channels=1024, out_channels=128,
                                            kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b1_1x1_bn = self.__batch_normalization(2, 'inception_b1_1x1_bn', num_features=128,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b1_1x7 = self.__conv(2, name='inception_b1_1x7', in_channels=192, out_channels=224,
                                            kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b1_7x1_2 = self.__conv(2, name='inception_b1_7x1_2', in_channels=192, out_channels=192,
                                              kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b1_1x7_bn = self.__batch_normalization(2, 'inception_b1_1x7_bn', num_features=224,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b1_7x1_2_bn = self.__batch_normalization(2, 'inception_b1_7x1_2_bn', num_features=192,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b1_7x1 = self.__conv(2, name='inception_b1_7x1', in_channels=224, out_channels=256,
                                            kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b1_1x7_2 = self.__conv(2, name='inception_b1_1x7_2', in_channels=192, out_channels=224,
                                              kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b1_7x1_bn = self.__batch_normalization(2, 'inception_b1_7x1_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b1_1x7_2_bn = self.__batch_normalization(2, 'inception_b1_1x7_2_bn', num_features=224,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b1_7x1_3 = self.__conv(2, name='inception_b1_7x1_3', in_channels=224, out_channels=224,
                                              kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b1_7x1_3_bn = self.__batch_normalization(2, 'inception_b1_7x1_3_bn', num_features=224,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b1_1x7_3 = self.__conv(2, name='inception_b1_1x7_3', in_channels=224, out_channels=256,
                                              kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b1_1x7_3_bn = self.__batch_normalization(2, 'inception_b1_1x7_3_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b2_1x1_2 = self.__conv(2, name='inception_b2_1x1_2', in_channels=1024, out_channels=384,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b2_7x1_2_reduce = self.__conv(2, name='inception_b2_7x1_2_reduce', in_channels=1024,
                                                     out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                     bias=False)
        self.inception_b2_1x7_reduce = self.__conv(2, name='inception_b2_1x7_reduce', in_channels=1024,
                                                   out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                   bias=False)
        self.inception_b2_1x1_2_bn = self.__batch_normalization(2, 'inception_b2_1x1_2_bn', num_features=384,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b2_7x1_2_reduce_bn = self.__batch_normalization(2, 'inception_b2_7x1_2_reduce_bn',
                                                                       num_features=192, eps=0.0010000000475,
                                                                       momentum=0.0)
        self.inception_b2_1x1 = self.__conv(2, name='inception_b2_1x1', in_channels=1024, out_channels=128,
                                            kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b2_1x7_reduce_bn = self.__batch_normalization(2, 'inception_b2_1x7_reduce_bn', num_features=192,
                                                                     eps=0.0010000000475, momentum=0.0)
        self.inception_b2_1x1_bn = self.__batch_normalization(2, 'inception_b2_1x1_bn', num_features=128,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b2_7x1_2 = self.__conv(2, name='inception_b2_7x1_2', in_channels=192, out_channels=192,
                                              kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b2_1x7 = self.__conv(2, name='inception_b2_1x7', in_channels=192, out_channels=224,
                                            kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b2_7x1_2_bn = self.__batch_normalization(2, 'inception_b2_7x1_2_bn', num_features=192,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b2_1x7_bn = self.__batch_normalization(2, 'inception_b2_1x7_bn', num_features=224,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b2_1x7_2 = self.__conv(2, name='inception_b2_1x7_2', in_channels=192, out_channels=224,
                                              kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b2_7x1 = self.__conv(2, name='inception_b2_7x1', in_channels=224, out_channels=256,
                                            kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b2_1x7_2_bn = self.__batch_normalization(2, 'inception_b2_1x7_2_bn', num_features=224,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b2_7x1_bn = self.__batch_normalization(2, 'inception_b2_7x1_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b2_7x1_3 = self.__conv(2, name='inception_b2_7x1_3', in_channels=224, out_channels=224,
                                              kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b2_7x1_3_bn = self.__batch_normalization(2, 'inception_b2_7x1_3_bn', num_features=224,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b2_1x7_3 = self.__conv(2, name='inception_b2_1x7_3', in_channels=224, out_channels=256,
                                              kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b2_1x7_3_bn = self.__batch_normalization(2, 'inception_b2_1x7_3_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b3_7x1_2_reduce = self.__conv(2, name='inception_b3_7x1_2_reduce', in_channels=1024,
                                                     out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                     bias=False)
        self.inception_b3_1x1_2 = self.__conv(2, name='inception_b3_1x1_2', in_channels=1024, out_channels=384,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b3_1x7_reduce = self.__conv(2, name='inception_b3_1x7_reduce', in_channels=1024,
                                                   out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                   bias=False)
        self.inception_b3_7x1_2_reduce_bn = self.__batch_normalization(2, 'inception_b3_7x1_2_reduce_bn',
                                                                       num_features=192, eps=0.0010000000475,
                                                                       momentum=0.0)
        self.inception_b3_1x1_2_bn = self.__batch_normalization(2, 'inception_b3_1x1_2_bn', num_features=384,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b3_1x7_reduce_bn = self.__batch_normalization(2, 'inception_b3_1x7_reduce_bn', num_features=192,
                                                                     eps=0.0010000000475, momentum=0.0)
        self.inception_b3_1x1 = self.__conv(2, name='inception_b3_1x1', in_channels=1024, out_channels=128,
                                            kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b3_1x1_bn = self.__batch_normalization(2, 'inception_b3_1x1_bn', num_features=128,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b3_7x1_2 = self.__conv(2, name='inception_b3_7x1_2', in_channels=192, out_channels=192,
                                              kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b3_1x7 = self.__conv(2, name='inception_b3_1x7', in_channels=192, out_channels=224,
                                            kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b3_7x1_2_bn = self.__batch_normalization(2, 'inception_b3_7x1_2_bn', num_features=192,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b3_1x7_bn = self.__batch_normalization(2, 'inception_b3_1x7_bn', num_features=224,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b3_1x7_2 = self.__conv(2, name='inception_b3_1x7_2', in_channels=192, out_channels=224,
                                              kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b3_7x1 = self.__conv(2, name='inception_b3_7x1', in_channels=224, out_channels=256,
                                            kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b3_1x7_2_bn = self.__batch_normalization(2, 'inception_b3_1x7_2_bn', num_features=224,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b3_7x1_bn = self.__batch_normalization(2, 'inception_b3_7x1_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b3_7x1_3 = self.__conv(2, name='inception_b3_7x1_3', in_channels=224, out_channels=224,
                                              kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b3_7x1_3_bn = self.__batch_normalization(2, 'inception_b3_7x1_3_bn', num_features=224,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b3_1x7_3 = self.__conv(2, name='inception_b3_1x7_3', in_channels=224, out_channels=256,
                                              kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b3_1x7_3_bn = self.__batch_normalization(2, 'inception_b3_1x7_3_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b4_7x1_2_reduce = self.__conv(2, name='inception_b4_7x1_2_reduce', in_channels=1024,
                                                     out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                     bias=False)
        self.inception_b4_1x1_2 = self.__conv(2, name='inception_b4_1x1_2', in_channels=1024, out_channels=384,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b4_1x7_reduce = self.__conv(2, name='inception_b4_1x7_reduce', in_channels=1024,
                                                   out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                   bias=False)
        self.inception_b4_1x1 = self.__conv(2, name='inception_b4_1x1', in_channels=1024, out_channels=128,
                                            kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b4_7x1_2_reduce_bn = self.__batch_normalization(2, 'inception_b4_7x1_2_reduce_bn',
                                                                       num_features=192, eps=0.0010000000475,
                                                                       momentum=0.0)
        self.inception_b4_1x1_2_bn = self.__batch_normalization(2, 'inception_b4_1x1_2_bn', num_features=384,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b4_1x7_reduce_bn = self.__batch_normalization(2, 'inception_b4_1x7_reduce_bn', num_features=192,
                                                                     eps=0.0010000000475, momentum=0.0)
        self.inception_b4_1x1_bn = self.__batch_normalization(2, 'inception_b4_1x1_bn', num_features=128,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b4_7x1_2 = self.__conv(2, name='inception_b4_7x1_2', in_channels=192, out_channels=192,
                                              kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b4_1x7 = self.__conv(2, name='inception_b4_1x7', in_channels=192, out_channels=224,
                                            kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b4_7x1_2_bn = self.__batch_normalization(2, 'inception_b4_7x1_2_bn', num_features=192,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b4_1x7_bn = self.__batch_normalization(2, 'inception_b4_1x7_bn', num_features=224,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b4_1x7_2 = self.__conv(2, name='inception_b4_1x7_2', in_channels=192, out_channels=224,
                                              kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b4_7x1 = self.__conv(2, name='inception_b4_7x1', in_channels=224, out_channels=256,
                                            kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b4_1x7_2_bn = self.__batch_normalization(2, 'inception_b4_1x7_2_bn', num_features=224,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b4_7x1_bn = self.__batch_normalization(2, 'inception_b4_7x1_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b4_7x1_3 = self.__conv(2, name='inception_b4_7x1_3', in_channels=224, out_channels=224,
                                              kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b4_7x1_3_bn = self.__batch_normalization(2, 'inception_b4_7x1_3_bn', num_features=224,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b4_1x7_3 = self.__conv(2, name='inception_b4_1x7_3', in_channels=224, out_channels=256,
                                              kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b4_1x7_3_bn = self.__batch_normalization(2, 'inception_b4_1x7_3_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b5_1x1_2 = self.__conv(2, name='inception_b5_1x1_2', in_channels=1024, out_channels=384,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b5_1x7_reduce = self.__conv(2, name='inception_b5_1x7_reduce', in_channels=1024,
                                                   out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                   bias=False)
        self.inception_b5_7x1_2_reduce = self.__conv(2, name='inception_b5_7x1_2_reduce', in_channels=1024,
                                                     out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                     bias=False)
        self.inception_b5_1x1_2_bn = self.__batch_normalization(2, 'inception_b5_1x1_2_bn', num_features=384,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b5_1x7_reduce_bn = self.__batch_normalization(2, 'inception_b5_1x7_reduce_bn', num_features=192,
                                                                     eps=0.0010000000475, momentum=0.0)
        self.inception_b5_1x1 = self.__conv(2, name='inception_b5_1x1', in_channels=1024, out_channels=128,
                                            kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b5_7x1_2_reduce_bn = self.__batch_normalization(2, 'inception_b5_7x1_2_reduce_bn',
                                                                       num_features=192, eps=0.0010000000475,
                                                                       momentum=0.0)
        self.inception_b5_1x1_bn = self.__batch_normalization(2, 'inception_b5_1x1_bn', num_features=128,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b5_1x7 = self.__conv(2, name='inception_b5_1x7', in_channels=192, out_channels=224,
                                            kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b5_7x1_2 = self.__conv(2, name='inception_b5_7x1_2', in_channels=192, out_channels=192,
                                              kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b5_1x7_bn = self.__batch_normalization(2, 'inception_b5_1x7_bn', num_features=224,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b5_7x1_2_bn = self.__batch_normalization(2, 'inception_b5_7x1_2_bn', num_features=192,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b5_7x1 = self.__conv(2, name='inception_b5_7x1', in_channels=224, out_channels=256,
                                            kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b5_1x7_2 = self.__conv(2, name='inception_b5_1x7_2', in_channels=192, out_channels=224,
                                              kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b5_7x1_bn = self.__batch_normalization(2, 'inception_b5_7x1_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b5_1x7_2_bn = self.__batch_normalization(2, 'inception_b5_1x7_2_bn', num_features=224,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b5_7x1_3 = self.__conv(2, name='inception_b5_7x1_3', in_channels=224, out_channels=224,
                                              kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b5_7x1_3_bn = self.__batch_normalization(2, 'inception_b5_7x1_3_bn', num_features=224,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b5_1x7_3 = self.__conv(2, name='inception_b5_1x7_3', in_channels=224, out_channels=256,
                                              kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b5_1x7_3_bn = self.__batch_normalization(2, 'inception_b5_1x7_3_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b6_7x1_2_reduce = self.__conv(2, name='inception_b6_7x1_2_reduce', in_channels=1024,
                                                     out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                     bias=False)
        self.inception_b6_1x7_reduce = self.__conv(2, name='inception_b6_1x7_reduce', in_channels=1024,
                                                   out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                   bias=False)
        self.inception_b6_1x1_2 = self.__conv(2, name='inception_b6_1x1_2', in_channels=1024, out_channels=384,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b6_7x1_2_reduce_bn = self.__batch_normalization(2, 'inception_b6_7x1_2_reduce_bn',
                                                                       num_features=192, eps=0.0010000000475,
                                                                       momentum=0.0)
        self.inception_b6_1x1 = self.__conv(2, name='inception_b6_1x1', in_channels=1024, out_channels=128,
                                            kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b6_1x7_reduce_bn = self.__batch_normalization(2, 'inception_b6_1x7_reduce_bn', num_features=192,
                                                                     eps=0.0010000000475, momentum=0.0)
        self.inception_b6_1x1_2_bn = self.__batch_normalization(2, 'inception_b6_1x1_2_bn', num_features=384,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b6_1x1_bn = self.__batch_normalization(2, 'inception_b6_1x1_bn', num_features=128,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b6_7x1_2 = self.__conv(2, name='inception_b6_7x1_2', in_channels=192, out_channels=192,
                                              kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b6_1x7 = self.__conv(2, name='inception_b6_1x7', in_channels=192, out_channels=224,
                                            kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b6_7x1_2_bn = self.__batch_normalization(2, 'inception_b6_7x1_2_bn', num_features=192,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b6_1x7_bn = self.__batch_normalization(2, 'inception_b6_1x7_bn', num_features=224,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b6_1x7_2 = self.__conv(2, name='inception_b6_1x7_2', in_channels=192, out_channels=224,
                                              kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b6_7x1 = self.__conv(2, name='inception_b6_7x1', in_channels=224, out_channels=256,
                                            kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b6_1x7_2_bn = self.__batch_normalization(2, 'inception_b6_1x7_2_bn', num_features=224,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b6_7x1_bn = self.__batch_normalization(2, 'inception_b6_7x1_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b6_7x1_3 = self.__conv(2, name='inception_b6_7x1_3', in_channels=224, out_channels=224,
                                              kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b6_7x1_3_bn = self.__batch_normalization(2, 'inception_b6_7x1_3_bn', num_features=224,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b6_1x7_3 = self.__conv(2, name='inception_b6_1x7_3', in_channels=224, out_channels=256,
                                              kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b6_1x7_3_bn = self.__batch_normalization(2, 'inception_b6_1x7_3_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b7_1x1_2 = self.__conv(2, name='inception_b7_1x1_2', in_channels=1024, out_channels=384,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b7_1x7_reduce = self.__conv(2, name='inception_b7_1x7_reduce', in_channels=1024,
                                                   out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                   bias=False)
        self.inception_b7_7x1_2_reduce = self.__conv(2, name='inception_b7_7x1_2_reduce', in_channels=1024,
                                                     out_channels=192, kernel_size=(1L, 1L), stride=(1L, 1L), groups=1,
                                                     bias=False)
        self.inception_b7_1x1 = self.__conv(2, name='inception_b7_1x1', in_channels=1024, out_channels=128,
                                            kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b7_1x1_2_bn = self.__batch_normalization(2, 'inception_b7_1x1_2_bn', num_features=384,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b7_1x7_reduce_bn = self.__batch_normalization(2, 'inception_b7_1x7_reduce_bn', num_features=192,
                                                                     eps=0.0010000000475, momentum=0.0)
        self.inception_b7_7x1_2_reduce_bn = self.__batch_normalization(2, 'inception_b7_7x1_2_reduce_bn',
                                                                       num_features=192, eps=0.0010000000475,
                                                                       momentum=0.0)
        self.inception_b7_1x1_bn = self.__batch_normalization(2, 'inception_b7_1x1_bn', num_features=128,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b7_1x7 = self.__conv(2, name='inception_b7_1x7', in_channels=192, out_channels=224,
                                            kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b7_7x1_2 = self.__conv(2, name='inception_b7_7x1_2', in_channels=192, out_channels=192,
                                              kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b7_1x7_bn = self.__batch_normalization(2, 'inception_b7_1x7_bn', num_features=224,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b7_7x1_2_bn = self.__batch_normalization(2, 'inception_b7_7x1_2_bn', num_features=192,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b7_7x1 = self.__conv(2, name='inception_b7_7x1', in_channels=224, out_channels=256,
                                            kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b7_1x7_2 = self.__conv(2, name='inception_b7_1x7_2', in_channels=192, out_channels=224,
                                              kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b7_7x1_bn = self.__batch_normalization(2, 'inception_b7_7x1_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_b7_1x7_2_bn = self.__batch_normalization(2, 'inception_b7_1x7_2_bn', num_features=224,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b7_7x1_3 = self.__conv(2, name='inception_b7_7x1_3', in_channels=224, out_channels=224,
                                              kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b7_7x1_3_bn = self.__batch_normalization(2, 'inception_b7_7x1_3_bn', num_features=224,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_b7_1x7_3 = self.__conv(2, name='inception_b7_1x7_3', in_channels=224, out_channels=256,
                                              kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_b7_1x7_3_bn = self.__batch_normalization(2, 'inception_b7_1x7_3_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.reduction_b_3x3_reduce = self.__conv(2, name='reduction_b_3x3_reduce', in_channels=1024, out_channels=192,
                                                  kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.reduction_b_1x7_reduce = self.__conv(2, name='reduction_b_1x7_reduce', in_channels=1024, out_channels=256,
                                                  kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.reduction_b_3x3_reduce_bn = self.__batch_normalization(2, 'reduction_b_3x3_reduce_bn', num_features=192,
                                                                    eps=0.0010000000475, momentum=0.0)
        self.reduction_b_1x7_reduce_bn = self.__batch_normalization(2, 'reduction_b_1x7_reduce_bn', num_features=256,
                                                                    eps=0.0010000000475, momentum=0.0)
        self.reduction_b_3x3 = self.__conv(2, name='reduction_b_3x3', in_channels=192, out_channels=192,
                                           kernel_size=(3L, 3L), stride=(2L, 2L), groups=1, bias=False)
        self.reduction_b_1x7 = self.__conv(2, name='reduction_b_1x7', in_channels=256, out_channels=256,
                                           kernel_size=(1L, 7L), stride=(1L, 1L), groups=1, bias=False)
        self.reduction_b_3x3_bn = self.__batch_normalization(2, 'reduction_b_3x3_bn', num_features=192,
                                                             eps=0.0010000000475, momentum=0.0)
        self.reduction_b_1x7_bn = self.__batch_normalization(2, 'reduction_b_1x7_bn', num_features=256,
                                                             eps=0.0010000000475, momentum=0.0)
        self.reduction_b_7x1 = self.__conv(2, name='reduction_b_7x1', in_channels=256, out_channels=320,
                                           kernel_size=(7L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.reduction_b_7x1_bn = self.__batch_normalization(2, 'reduction_b_7x1_bn', num_features=320,
                                                             eps=0.0010000000475, momentum=0.0)
        self.reduction_b_3x3_2 = self.__conv(2, name='reduction_b_3x3_2', in_channels=320, out_channels=320,
                                             kernel_size=(3L, 3L), stride=(2L, 2L), groups=1, bias=False)
        self.reduction_b_3x3_2_bn = self.__batch_normalization(2, 'reduction_b_3x3_2_bn', num_features=320,
                                                               eps=0.0010000000475, momentum=0.0)
        self.inception_c1_1x1_4 = self.__conv(2, name='inception_c1_1x1_4', in_channels=1536, out_channels=384,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c1_1x1_2 = self.__conv(2, name='inception_c1_1x1_2', in_channels=1536, out_channels=256,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c1_1x1_3 = self.__conv(2, name='inception_c1_1x1_3', in_channels=1536, out_channels=384,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c1_1x1_4_bn = self.__batch_normalization(2, 'inception_c1_1x1_4_bn', num_features=384,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c1_1x1_2_bn = self.__batch_normalization(2, 'inception_c1_1x1_2_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c1_1x1_3_bn = self.__batch_normalization(2, 'inception_c1_1x1_3_bn', num_features=384,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c1_1x1 = self.__conv(2, name='inception_c1_1x1', in_channels=1536, out_channels=256,
                                            kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c1_1x1_bn = self.__batch_normalization(2, 'inception_c1_1x1_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_c1_3x1_2 = self.__conv(2, name='inception_c1_3x1_2', in_channels=384, out_channels=448,
                                              kernel_size=(3L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c1_3x1 = self.__conv(2, name='inception_c1_3x1', in_channels=384, out_channels=256,
                                            kernel_size=(3L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c1_1x3 = self.__conv(2, name='inception_c1_1x3', in_channels=384, out_channels=256,
                                            kernel_size=(1L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c1_3x1_2_bn = self.__batch_normalization(2, 'inception_c1_3x1_2_bn', num_features=448,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c1_3x1_bn = self.__batch_normalization(2, 'inception_c1_3x1_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_c1_1x3_bn = self.__batch_normalization(2, 'inception_c1_1x3_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_c1_1x3_2 = self.__conv(2, name='inception_c1_1x3_2', in_channels=448, out_channels=512,
                                              kernel_size=(1L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c1_1x3_2_bn = self.__batch_normalization(2, 'inception_c1_1x3_2_bn', num_features=512,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c1_1x3_3 = self.__conv(2, name='inception_c1_1x3_3', in_channels=512, out_channels=256,
                                              kernel_size=(1L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c1_3x1_3 = self.__conv(2, name='inception_c1_3x1_3', in_channels=512, out_channels=256,
                                              kernel_size=(3L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c1_1x3_3_bn = self.__batch_normalization(2, 'inception_c1_1x3_3_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c1_3x1_3_bn = self.__batch_normalization(2, 'inception_c1_3x1_3_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c2_1x1_4 = self.__conv(2, name='inception_c2_1x1_4', in_channels=1536, out_channels=384,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c2_1x1_3 = self.__conv(2, name='inception_c2_1x1_3', in_channels=1536, out_channels=384,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c2_1x1_2 = self.__conv(2, name='inception_c2_1x1_2', in_channels=1536, out_channels=256,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c2_1x1_4_bn = self.__batch_normalization(2, 'inception_c2_1x1_4_bn', num_features=384,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c2_1x1_3_bn = self.__batch_normalization(2, 'inception_c2_1x1_3_bn', num_features=384,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c2_1x1_2_bn = self.__batch_normalization(2, 'inception_c2_1x1_2_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c2_1x1 = self.__conv(2, name='inception_c2_1x1', in_channels=1536, out_channels=256,
                                            kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c2_1x1_bn = self.__batch_normalization(2, 'inception_c2_1x1_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_c2_3x1_2 = self.__conv(2, name='inception_c2_3x1_2', in_channels=384, out_channels=448,
                                              kernel_size=(3L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c2_1x3 = self.__conv(2, name='inception_c2_1x3', in_channels=384, out_channels=256,
                                            kernel_size=(1L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c2_3x1 = self.__conv(2, name='inception_c2_3x1', in_channels=384, out_channels=256,
                                            kernel_size=(3L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c2_3x1_2_bn = self.__batch_normalization(2, 'inception_c2_3x1_2_bn', num_features=448,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c2_1x3_bn = self.__batch_normalization(2, 'inception_c2_1x3_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_c2_3x1_bn = self.__batch_normalization(2, 'inception_c2_3x1_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_c2_1x3_2 = self.__conv(2, name='inception_c2_1x3_2', in_channels=448, out_channels=512,
                                              kernel_size=(1L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c2_1x3_2_bn = self.__batch_normalization(2, 'inception_c2_1x3_2_bn', num_features=512,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c2_3x1_3 = self.__conv(2, name='inception_c2_3x1_3', in_channels=512, out_channels=256,
                                              kernel_size=(3L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c2_1x3_3 = self.__conv(2, name='inception_c2_1x3_3', in_channels=512, out_channels=256,
                                              kernel_size=(1L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c2_3x1_3_bn = self.__batch_normalization(2, 'inception_c2_3x1_3_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c2_1x3_3_bn = self.__batch_normalization(2, 'inception_c2_1x3_3_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c3_1x1_4 = self.__conv(2, name='inception_c3_1x1_4', in_channels=1536, out_channels=384,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c3_1x1_2 = self.__conv(2, name='inception_c3_1x1_2', in_channels=1536, out_channels=256,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c3_1x1_3 = self.__conv(2, name='inception_c3_1x1_3', in_channels=1536, out_channels=384,
                                              kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c3_1x1_4_bn = self.__batch_normalization(2, 'inception_c3_1x1_4_bn', num_features=384,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c3_1x1_2_bn = self.__batch_normalization(2, 'inception_c3_1x1_2_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c3_1x1 = self.__conv(2, name='inception_c3_1x1', in_channels=1536, out_channels=256,
                                            kernel_size=(1L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c3_1x1_3_bn = self.__batch_normalization(2, 'inception_c3_1x1_3_bn', num_features=384,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c3_1x1_bn = self.__batch_normalization(2, 'inception_c3_1x1_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_c3_3x1_2 = self.__conv(2, name='inception_c3_3x1_2', in_channels=384, out_channels=448,
                                              kernel_size=(3L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c3_1x3 = self.__conv(2, name='inception_c3_1x3', in_channels=384, out_channels=256,
                                            kernel_size=(1L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c3_3x1 = self.__conv(2, name='inception_c3_3x1', in_channels=384, out_channels=256,
                                            kernel_size=(3L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c3_3x1_2_bn = self.__batch_normalization(2, 'inception_c3_3x1_2_bn', num_features=448,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c3_1x3_bn = self.__batch_normalization(2, 'inception_c3_1x3_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_c3_3x1_bn = self.__batch_normalization(2, 'inception_c3_3x1_bn', num_features=256,
                                                              eps=0.0010000000475, momentum=0.0)
        self.inception_c3_1x3_2 = self.__conv(2, name='inception_c3_1x3_2', in_channels=448, out_channels=512,
                                              kernel_size=(1L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c3_1x3_2_bn = self.__batch_normalization(2, 'inception_c3_1x3_2_bn', num_features=512,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c3_1x3_3 = self.__conv(2, name='inception_c3_1x3_3', in_channels=512, out_channels=256,
                                              kernel_size=(1L, 3L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c3_3x1_3 = self.__conv(2, name='inception_c3_3x1_3', in_channels=512, out_channels=256,
                                              kernel_size=(3L, 1L), stride=(1L, 1L), groups=1, bias=False)
        self.inception_c3_1x3_3_bn = self.__batch_normalization(2, 'inception_c3_1x3_3_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.inception_c3_3x1_3_bn = self.__batch_normalization(2, 'inception_c3_3x1_3_bn', num_features=256,
                                                                eps=0.0010000000475, momentum=0.0)
        self.my_classifier_1 = self.__dense(name='my_classifier_1', in_features=1536, out_features=2, bias=True)

    def forward(self, x):
        conv1_3x3_s2_pad = F.pad(x, (0L, 1L, 0L, 1L))
        conv1_3x3_s2 = self.conv1_3x3_s2(conv1_3x3_s2_pad)
        conv1_3x3_s2_bn = self.conv1_3x3_s2_bn(conv1_3x3_s2)
        conv1_3x3_s2_relu = F.relu(conv1_3x3_s2_bn)
        conv2_3x3_s1 = self.conv2_3x3_s1(conv1_3x3_s2_relu)
        conv2_3x3_s1_bn = self.conv2_3x3_s1_bn(conv2_3x3_s1)
        conv2_3x3_s1_relu = F.relu(conv2_3x3_s1_bn)
        conv3_3x3_s1_pad = F.pad(conv2_3x3_s1_relu, (1L, 1L, 1L, 1L))
        conv3_3x3_s1 = self.conv3_3x3_s1(conv3_3x3_s1_pad)
        conv3_3x3_s1_bn = self.conv3_3x3_s1_bn(conv3_3x3_s1)
        conv3_3x3_s1_relu = F.relu(conv3_3x3_s1_bn)
        inception_stem1_3x3_s2_pad = F.pad(conv3_3x3_s1_relu, (0L, 1L, 0L, 1L))
        inception_stem1_3x3_s2 = self.inception_stem1_3x3_s2(inception_stem1_3x3_s2_pad)
        inception_stem1_pool_pad = F.pad(conv3_3x3_s1_relu, (0L, 1L, 0L, 1L), value=float('-inf'))
        inception_stem1_pool = F.max_pool2d(inception_stem1_pool_pad, kernel_size=(3L, 3L), stride=(2L, 2L), padding=0,
                                            ceil_mode=False)
        inception_stem1_3x3_s2_bn = self.inception_stem1_3x3_s2_bn(inception_stem1_3x3_s2)
        inception_stem1_3x3_s2_relu = F.relu(inception_stem1_3x3_s2_bn)
        inception_stem1 = torch.cat((inception_stem1_pool, inception_stem1_3x3_s2_relu), 1)
        inception_stem2_1x7_reduce = self.inception_stem2_1x7_reduce(inception_stem1)
        inception_stem2_3x3_reduce = self.inception_stem2_3x3_reduce(inception_stem1)
        inception_stem2_1x7_reduce_bn = self.inception_stem2_1x7_reduce_bn(inception_stem2_1x7_reduce)
        inception_stem2_3x3_reduce_bn = self.inception_stem2_3x3_reduce_bn(inception_stem2_3x3_reduce)
        inception_stem2_1x7_reduce_relu = F.relu(inception_stem2_1x7_reduce_bn)
        inception_stem2_3x3_reduce_relu = F.relu(inception_stem2_3x3_reduce_bn)
        inception_stem2_1x7_pad = F.pad(inception_stem2_1x7_reduce_relu, (3L, 3L, 0L, 0L))
        inception_stem2_1x7 = self.inception_stem2_1x7(inception_stem2_1x7_pad)
        inception_stem2_3x3 = self.inception_stem2_3x3(inception_stem2_3x3_reduce_relu)
        inception_stem2_1x7_bn = self.inception_stem2_1x7_bn(inception_stem2_1x7)
        inception_stem2_3x3_bn = self.inception_stem2_3x3_bn(inception_stem2_3x3)
        inception_stem2_1x7_relu = F.relu(inception_stem2_1x7_bn)
        inception_stem2_3x3_relu = F.relu(inception_stem2_3x3_bn)
        inception_stem2_7x1_pad = F.pad(inception_stem2_1x7_relu, (0L, 0L, 3L, 3L))
        inception_stem2_7x1 = self.inception_stem2_7x1(inception_stem2_7x1_pad)
        inception_stem2_7x1_bn = self.inception_stem2_7x1_bn(inception_stem2_7x1)
        inception_stem2_7x1_relu = F.relu(inception_stem2_7x1_bn)
        inception_stem2_3x3_2 = self.inception_stem2_3x3_2(inception_stem2_7x1_relu)
        inception_stem2_3x3_2_bn = self.inception_stem2_3x3_2_bn(inception_stem2_3x3_2)
        inception_stem2_3x3_2_relu = F.relu(inception_stem2_3x3_2_bn)
        inception_stem2 = torch.cat((inception_stem2_3x3_relu, inception_stem2_3x3_2_relu), 1)
        inception_stem3_pool_pad = F.pad(inception_stem2, (0L, 1L, 0L, 1L), value=float('-inf'))
        inception_stem3_pool = F.max_pool2d(inception_stem3_pool_pad, kernel_size=(3L, 3L), stride=(2L, 2L), padding=0,
                                            ceil_mode=False)
        inception_stem3_3x3_s2_pad = F.pad(inception_stem2, (0L, 1L, 0L, 1L))
        inception_stem3_3x3_s2 = self.inception_stem3_3x3_s2(inception_stem3_3x3_s2_pad)
        inception_stem3_3x3_s2_bn = self.inception_stem3_3x3_s2_bn(inception_stem3_3x3_s2)
        inception_stem3_3x3_s2_relu = F.relu(inception_stem3_3x3_s2_bn)
        inception_stem3 = torch.cat((inception_stem3_3x3_s2_relu, inception_stem3_pool), 1)
        inception_a1_3x3_reduce = self.inception_a1_3x3_reduce(inception_stem3)
        inception_a1_1x1_2 = self.inception_a1_1x1_2(inception_stem3)
        inception_a1_pool_ave = F.avg_pool2d(inception_stem3, kernel_size=(3L, 3L), stride=(1L, 1L), padding=(1L,),
                                             ceil_mode=False, count_include_pad=False)
        inception_a1_3x3_2_reduce = self.inception_a1_3x3_2_reduce(inception_stem3)
        inception_a1_3x3_reduce_bn = self.inception_a1_3x3_reduce_bn(inception_a1_3x3_reduce)
        inception_a1_1x1_2_bn = self.inception_a1_1x1_2_bn(inception_a1_1x1_2)
        inception_a1_1x1 = self.inception_a1_1x1(inception_a1_pool_ave)
        inception_a1_3x3_2_reduce_bn = self.inception_a1_3x3_2_reduce_bn(inception_a1_3x3_2_reduce)
        inception_a1_3x3_reduce_relu = F.relu(inception_a1_3x3_reduce_bn)
        inception_a1_1x1_2_relu = F.relu(inception_a1_1x1_2_bn)
        inception_a1_1x1_bn = self.inception_a1_1x1_bn(inception_a1_1x1)
        inception_a1_3x3_2_reduce_relu = F.relu(inception_a1_3x3_2_reduce_bn)
        inception_a1_3x3_pad = F.pad(inception_a1_3x3_reduce_relu, (1L, 1L, 1L, 1L))
        inception_a1_3x3 = self.inception_a1_3x3(inception_a1_3x3_pad)
        inception_a1_1x1_relu = F.relu(inception_a1_1x1_bn)
        inception_a1_3x3_2_pad = F.pad(inception_a1_3x3_2_reduce_relu, (1L, 1L, 1L, 1L))
        inception_a1_3x3_2 = self.inception_a1_3x3_2(inception_a1_3x3_2_pad)
        inception_a1_3x3_bn = self.inception_a1_3x3_bn(inception_a1_3x3)
        inception_a1_3x3_2_bn = self.inception_a1_3x3_2_bn(inception_a1_3x3_2)
        inception_a1_3x3_relu = F.relu(inception_a1_3x3_bn)
        inception_a1_3x3_2_relu = F.relu(inception_a1_3x3_2_bn)
        inception_a1_3x3_3_pad = F.pad(inception_a1_3x3_2_relu, (1L, 1L, 1L, 1L))
        inception_a1_3x3_3 = self.inception_a1_3x3_3(inception_a1_3x3_3_pad)
        inception_a1_3x3_3_bn = self.inception_a1_3x3_3_bn(inception_a1_3x3_3)
        inception_a1_3x3_3_relu = F.relu(inception_a1_3x3_3_bn)
        inception_a1_concat = torch.cat(
            (inception_a1_1x1_2_relu, inception_a1_3x3_relu, inception_a1_3x3_3_relu, inception_a1_1x1_relu), 1)
        inception_a2_1x1_2 = self.inception_a2_1x1_2(inception_a1_concat)
        inception_a2_3x3_reduce = self.inception_a2_3x3_reduce(inception_a1_concat)
        inception_a2_pool_ave = F.avg_pool2d(inception_a1_concat, kernel_size=(3L, 3L), stride=(1L, 1L), padding=(1L,),
                                             ceil_mode=False, count_include_pad=False)
        inception_a2_3x3_2_reduce = self.inception_a2_3x3_2_reduce(inception_a1_concat)
        inception_a2_1x1_2_bn = self.inception_a2_1x1_2_bn(inception_a2_1x1_2)
        inception_a2_3x3_reduce_bn = self.inception_a2_3x3_reduce_bn(inception_a2_3x3_reduce)
        inception_a2_1x1 = self.inception_a2_1x1(inception_a2_pool_ave)
        inception_a2_3x3_2_reduce_bn = self.inception_a2_3x3_2_reduce_bn(inception_a2_3x3_2_reduce)
        inception_a2_1x1_2_relu = F.relu(inception_a2_1x1_2_bn)
        inception_a2_3x3_reduce_relu = F.relu(inception_a2_3x3_reduce_bn)
        inception_a2_1x1_bn = self.inception_a2_1x1_bn(inception_a2_1x1)
        inception_a2_3x3_2_reduce_relu = F.relu(inception_a2_3x3_2_reduce_bn)
        inception_a2_3x3_pad = F.pad(inception_a2_3x3_reduce_relu, (1L, 1L, 1L, 1L))
        inception_a2_3x3 = self.inception_a2_3x3(inception_a2_3x3_pad)
        inception_a2_1x1_relu = F.relu(inception_a2_1x1_bn)
        inception_a2_3x3_2_pad = F.pad(inception_a2_3x3_2_reduce_relu, (1L, 1L, 1L, 1L))
        inception_a2_3x3_2 = self.inception_a2_3x3_2(inception_a2_3x3_2_pad)
        inception_a2_3x3_bn = self.inception_a2_3x3_bn(inception_a2_3x3)
        inception_a2_3x3_2_bn = self.inception_a2_3x3_2_bn(inception_a2_3x3_2)
        inception_a2_3x3_relu = F.relu(inception_a2_3x3_bn)
        inception_a2_3x3_2_relu = F.relu(inception_a2_3x3_2_bn)
        inception_a2_3x3_3_pad = F.pad(inception_a2_3x3_2_relu, (1L, 1L, 1L, 1L))
        inception_a2_3x3_3 = self.inception_a2_3x3_3(inception_a2_3x3_3_pad)
        inception_a2_3x3_3_bn = self.inception_a2_3x3_3_bn(inception_a2_3x3_3)
        inception_a2_3x3_3_relu = F.relu(inception_a2_3x3_3_bn)
        inception_a2_concat = torch.cat(
            (inception_a2_1x1_2_relu, inception_a2_3x3_relu, inception_a2_3x3_3_relu, inception_a2_1x1_relu), 1)
        inception_a3_3x3_reduce = self.inception_a3_3x3_reduce(inception_a2_concat)
        inception_a3_1x1_2 = self.inception_a3_1x1_2(inception_a2_concat)
        inception_a3_3x3_2_reduce = self.inception_a3_3x3_2_reduce(inception_a2_concat)
        inception_a3_pool_ave = F.avg_pool2d(inception_a2_concat, kernel_size=(3L, 3L), stride=(1L, 1L), padding=(1L,),
                                             ceil_mode=False, count_include_pad=False)
        inception_a3_3x3_reduce_bn = self.inception_a3_3x3_reduce_bn(inception_a3_3x3_reduce)
        inception_a3_1x1_2_bn = self.inception_a3_1x1_2_bn(inception_a3_1x1_2)
        inception_a3_3x3_2_reduce_bn = self.inception_a3_3x3_2_reduce_bn(inception_a3_3x3_2_reduce)
        inception_a3_1x1 = self.inception_a3_1x1(inception_a3_pool_ave)
        inception_a3_3x3_reduce_relu = F.relu(inception_a3_3x3_reduce_bn)
        inception_a3_1x1_2_relu = F.relu(inception_a3_1x1_2_bn)
        inception_a3_3x3_2_reduce_relu = F.relu(inception_a3_3x3_2_reduce_bn)
        inception_a3_1x1_bn = self.inception_a3_1x1_bn(inception_a3_1x1)
        inception_a3_3x3_pad = F.pad(inception_a3_3x3_reduce_relu, (1L, 1L, 1L, 1L))
        inception_a3_3x3 = self.inception_a3_3x3(inception_a3_3x3_pad)
        inception_a3_3x3_2_pad = F.pad(inception_a3_3x3_2_reduce_relu, (1L, 1L, 1L, 1L))
        inception_a3_3x3_2 = self.inception_a3_3x3_2(inception_a3_3x3_2_pad)
        inception_a3_1x1_relu = F.relu(inception_a3_1x1_bn)
        inception_a3_3x3_bn = self.inception_a3_3x3_bn(inception_a3_3x3)
        inception_a3_3x3_2_bn = self.inception_a3_3x3_2_bn(inception_a3_3x3_2)
        inception_a3_3x3_relu = F.relu(inception_a3_3x3_bn)
        inception_a3_3x3_2_relu = F.relu(inception_a3_3x3_2_bn)
        inception_a3_3x3_3_pad = F.pad(inception_a3_3x3_2_relu, (1L, 1L, 1L, 1L))
        inception_a3_3x3_3 = self.inception_a3_3x3_3(inception_a3_3x3_3_pad)
        inception_a3_3x3_3_bn = self.inception_a3_3x3_3_bn(inception_a3_3x3_3)
        inception_a3_3x3_3_relu = F.relu(inception_a3_3x3_3_bn)
        inception_a3_concat = torch.cat(
            (inception_a3_1x1_2_relu, inception_a3_3x3_relu, inception_a3_3x3_3_relu, inception_a3_1x1_relu), 1)
        inception_a4_1x1_2 = self.inception_a4_1x1_2(inception_a3_concat)
        inception_a4_3x3_2_reduce = self.inception_a4_3x3_2_reduce(inception_a3_concat)
        inception_a4_3x3_reduce = self.inception_a4_3x3_reduce(inception_a3_concat)
        inception_a4_pool_ave = F.avg_pool2d(inception_a3_concat, kernel_size=(3L, 3L), stride=(1L, 1L), padding=(1L,),
                                             ceil_mode=False, count_include_pad=False)
        inception_a4_1x1_2_bn = self.inception_a4_1x1_2_bn(inception_a4_1x1_2)
        inception_a4_3x3_2_reduce_bn = self.inception_a4_3x3_2_reduce_bn(inception_a4_3x3_2_reduce)
        inception_a4_3x3_reduce_bn = self.inception_a4_3x3_reduce_bn(inception_a4_3x3_reduce)
        inception_a4_1x1 = self.inception_a4_1x1(inception_a4_pool_ave)
        inception_a4_1x1_2_relu = F.relu(inception_a4_1x1_2_bn)
        inception_a4_3x3_2_reduce_relu = F.relu(inception_a4_3x3_2_reduce_bn)
        inception_a4_3x3_reduce_relu = F.relu(inception_a4_3x3_reduce_bn)
        inception_a4_1x1_bn = self.inception_a4_1x1_bn(inception_a4_1x1)
        inception_a4_3x3_2_pad = F.pad(inception_a4_3x3_2_reduce_relu, (1L, 1L, 1L, 1L))
        inception_a4_3x3_2 = self.inception_a4_3x3_2(inception_a4_3x3_2_pad)
        inception_a4_3x3_pad = F.pad(inception_a4_3x3_reduce_relu, (1L, 1L, 1L, 1L))
        inception_a4_3x3 = self.inception_a4_3x3(inception_a4_3x3_pad)
        inception_a4_1x1_relu = F.relu(inception_a4_1x1_bn)
        inception_a4_3x3_2_bn = self.inception_a4_3x3_2_bn(inception_a4_3x3_2)
        inception_a4_3x3_bn = self.inception_a4_3x3_bn(inception_a4_3x3)
        inception_a4_3x3_2_relu = F.relu(inception_a4_3x3_2_bn)
        inception_a4_3x3_relu = F.relu(inception_a4_3x3_bn)
        inception_a4_3x3_3_pad = F.pad(inception_a4_3x3_2_relu, (1L, 1L, 1L, 1L))
        inception_a4_3x3_3 = self.inception_a4_3x3_3(inception_a4_3x3_3_pad)
        inception_a4_3x3_3_bn = self.inception_a4_3x3_3_bn(inception_a4_3x3_3)
        inception_a4_3x3_3_relu = F.relu(inception_a4_3x3_3_bn)
        inception_a4_concat = torch.cat(
            (inception_a4_1x1_2_relu, inception_a4_3x3_relu, inception_a4_3x3_3_relu, inception_a4_1x1_relu), 1)
        reduction_a_pool_pad = F.pad(inception_a4_concat, (0L, 1L, 0L, 1L), value=float('-inf'))
        reduction_a_pool = F.max_pool2d(reduction_a_pool_pad, kernel_size=(3L, 3L), stride=(2L, 2L), padding=0,
                                        ceil_mode=False)
        reduction_a_3x3_2_reduce = self.reduction_a_3x3_2_reduce(inception_a4_concat)
        reduction_a_3x3_pad = F.pad(inception_a4_concat, (0L, 1L, 0L, 1L))
        reduction_a_3x3 = self.reduction_a_3x3(reduction_a_3x3_pad)
        reduction_a_3x3_2_reduce_bn = self.reduction_a_3x3_2_reduce_bn(reduction_a_3x3_2_reduce)
        reduction_a_3x3_bn = self.reduction_a_3x3_bn(reduction_a_3x3)
        reduction_a_3x3_2_reduce_relu = F.relu(reduction_a_3x3_2_reduce_bn)
        reduction_a_3x3_relu = F.relu(reduction_a_3x3_bn)
        reduction_a_3x3_2_pad = F.pad(reduction_a_3x3_2_reduce_relu, (1L, 1L, 1L, 1L))
        reduction_a_3x3_2 = self.reduction_a_3x3_2(reduction_a_3x3_2_pad)
        reduction_a_3x3_2_bn = self.reduction_a_3x3_2_bn(reduction_a_3x3_2)
        reduction_a_3x3_2_relu = F.relu(reduction_a_3x3_2_bn)
        reduction_a_3x3_3_pad = F.pad(reduction_a_3x3_2_relu, (0L, 1L, 0L, 1L))
        reduction_a_3x3_3 = self.reduction_a_3x3_3(reduction_a_3x3_3_pad)
        reduction_a_3x3_3_bn = self.reduction_a_3x3_3_bn(reduction_a_3x3_3)
        reduction_a_3x3_3_relu = F.relu(reduction_a_3x3_3_bn)
        reduction_a_concat = torch.cat((reduction_a_3x3_relu, reduction_a_3x3_3_relu, reduction_a_pool), 1)
        inception_b1_1x1_2 = self.inception_b1_1x1_2(reduction_a_concat)
        inception_b1_1x7_reduce = self.inception_b1_1x7_reduce(reduction_a_concat)
        inception_b1_7x1_2_reduce = self.inception_b1_7x1_2_reduce(reduction_a_concat)
        inception_b1_pool_ave = F.avg_pool2d(reduction_a_concat, kernel_size=(3L, 3L), stride=(1L, 1L), padding=(1L,),
                                             ceil_mode=False, count_include_pad=False)
        inception_b1_1x1_2_bn = self.inception_b1_1x1_2_bn(inception_b1_1x1_2)
        inception_b1_1x7_reduce_bn = self.inception_b1_1x7_reduce_bn(inception_b1_1x7_reduce)
        inception_b1_7x1_2_reduce_bn = self.inception_b1_7x1_2_reduce_bn(inception_b1_7x1_2_reduce)
        inception_b1_1x1 = self.inception_b1_1x1(inception_b1_pool_ave)
        inception_b1_1x1_2_relu = F.relu(inception_b1_1x1_2_bn)
        inception_b1_1x7_reduce_relu = F.relu(inception_b1_1x7_reduce_bn)
        inception_b1_7x1_2_reduce_relu = F.relu(inception_b1_7x1_2_reduce_bn)
        inception_b1_1x1_bn = self.inception_b1_1x1_bn(inception_b1_1x1)
        inception_b1_1x7_pad = F.pad(inception_b1_1x7_reduce_relu, (3L, 3L, 0L, 0L))
        inception_b1_1x7 = self.inception_b1_1x7(inception_b1_1x7_pad)
        inception_b1_7x1_2_pad = F.pad(inception_b1_7x1_2_reduce_relu, (0L, 0L, 3L, 3L))
        inception_b1_7x1_2 = self.inception_b1_7x1_2(inception_b1_7x1_2_pad)
        inception_b1_1x1_relu = F.relu(inception_b1_1x1_bn)
        inception_b1_1x7_bn = self.inception_b1_1x7_bn(inception_b1_1x7)
        inception_b1_7x1_2_bn = self.inception_b1_7x1_2_bn(inception_b1_7x1_2)
        inception_b1_1x7_relu = F.relu(inception_b1_1x7_bn)
        inception_b1_7x1_2_relu = F.relu(inception_b1_7x1_2_bn)
        inception_b1_7x1_pad = F.pad(inception_b1_1x7_relu, (0L, 0L, 3L, 3L))
        inception_b1_7x1 = self.inception_b1_7x1(inception_b1_7x1_pad)
        inception_b1_1x7_2_pad = F.pad(inception_b1_7x1_2_relu, (3L, 3L, 0L, 0L))
        inception_b1_1x7_2 = self.inception_b1_1x7_2(inception_b1_1x7_2_pad)
        inception_b1_7x1_bn = self.inception_b1_7x1_bn(inception_b1_7x1)
        inception_b1_1x7_2_bn = self.inception_b1_1x7_2_bn(inception_b1_1x7_2)
        inception_b1_7x1_relu = F.relu(inception_b1_7x1_bn)
        inception_b1_1x7_2_relu = F.relu(inception_b1_1x7_2_bn)
        inception_b1_7x1_3_pad = F.pad(inception_b1_1x7_2_relu, (0L, 0L, 3L, 3L))
        inception_b1_7x1_3 = self.inception_b1_7x1_3(inception_b1_7x1_3_pad)
        inception_b1_7x1_3_bn = self.inception_b1_7x1_3_bn(inception_b1_7x1_3)
        inception_b1_7x1_3_relu = F.relu(inception_b1_7x1_3_bn)
        inception_b1_1x7_3_pad = F.pad(inception_b1_7x1_3_relu, (3L, 3L, 0L, 0L))
        inception_b1_1x7_3 = self.inception_b1_1x7_3(inception_b1_1x7_3_pad)
        inception_b1_1x7_3_bn = self.inception_b1_1x7_3_bn(inception_b1_1x7_3)
        inception_b1_1x7_3_relu = F.relu(inception_b1_1x7_3_bn)
        inception_b1_concat = torch.cat(
            (inception_b1_1x1_2_relu, inception_b1_7x1_relu, inception_b1_1x7_3_relu, inception_b1_1x1_relu), 1)
        inception_b2_1x1_2 = self.inception_b2_1x1_2(inception_b1_concat)
        inception_b2_7x1_2_reduce = self.inception_b2_7x1_2_reduce(inception_b1_concat)
        inception_b2_pool_ave = F.avg_pool2d(inception_b1_concat, kernel_size=(3L, 3L), stride=(1L, 1L), padding=(1L,),
                                             ceil_mode=False, count_include_pad=False)
        inception_b2_1x7_reduce = self.inception_b2_1x7_reduce(inception_b1_concat)
        inception_b2_1x1_2_bn = self.inception_b2_1x1_2_bn(inception_b2_1x1_2)
        inception_b2_7x1_2_reduce_bn = self.inception_b2_7x1_2_reduce_bn(inception_b2_7x1_2_reduce)
        inception_b2_1x1 = self.inception_b2_1x1(inception_b2_pool_ave)
        inception_b2_1x7_reduce_bn = self.inception_b2_1x7_reduce_bn(inception_b2_1x7_reduce)
        inception_b2_1x1_2_relu = F.relu(inception_b2_1x1_2_bn)
        inception_b2_7x1_2_reduce_relu = F.relu(inception_b2_7x1_2_reduce_bn)
        inception_b2_1x1_bn = self.inception_b2_1x1_bn(inception_b2_1x1)
        inception_b2_1x7_reduce_relu = F.relu(inception_b2_1x7_reduce_bn)
        inception_b2_7x1_2_pad = F.pad(inception_b2_7x1_2_reduce_relu, (0L, 0L, 3L, 3L))
        inception_b2_7x1_2 = self.inception_b2_7x1_2(inception_b2_7x1_2_pad)
        inception_b2_1x1_relu = F.relu(inception_b2_1x1_bn)
        inception_b2_1x7_pad = F.pad(inception_b2_1x7_reduce_relu, (3L, 3L, 0L, 0L))
        inception_b2_1x7 = self.inception_b2_1x7(inception_b2_1x7_pad)
        inception_b2_7x1_2_bn = self.inception_b2_7x1_2_bn(inception_b2_7x1_2)
        inception_b2_1x7_bn = self.inception_b2_1x7_bn(inception_b2_1x7)
        inception_b2_7x1_2_relu = F.relu(inception_b2_7x1_2_bn)
        inception_b2_1x7_relu = F.relu(inception_b2_1x7_bn)
        inception_b2_1x7_2_pad = F.pad(inception_b2_7x1_2_relu, (3L, 3L, 0L, 0L))
        inception_b2_1x7_2 = self.inception_b2_1x7_2(inception_b2_1x7_2_pad)
        inception_b2_7x1_pad = F.pad(inception_b2_1x7_relu, (0L, 0L, 3L, 3L))
        inception_b2_7x1 = self.inception_b2_7x1(inception_b2_7x1_pad)
        inception_b2_1x7_2_bn = self.inception_b2_1x7_2_bn(inception_b2_1x7_2)
        inception_b2_7x1_bn = self.inception_b2_7x1_bn(inception_b2_7x1)
        inception_b2_1x7_2_relu = F.relu(inception_b2_1x7_2_bn)
        inception_b2_7x1_relu = F.relu(inception_b2_7x1_bn)
        inception_b2_7x1_3_pad = F.pad(inception_b2_1x7_2_relu, (0L, 0L, 3L, 3L))
        inception_b2_7x1_3 = self.inception_b2_7x1_3(inception_b2_7x1_3_pad)
        inception_b2_7x1_3_bn = self.inception_b2_7x1_3_bn(inception_b2_7x1_3)
        inception_b2_7x1_3_relu = F.relu(inception_b2_7x1_3_bn)
        inception_b2_1x7_3_pad = F.pad(inception_b2_7x1_3_relu, (3L, 3L, 0L, 0L))
        inception_b2_1x7_3 = self.inception_b2_1x7_3(inception_b2_1x7_3_pad)
        inception_b2_1x7_3_bn = self.inception_b2_1x7_3_bn(inception_b2_1x7_3)
        inception_b2_1x7_3_relu = F.relu(inception_b2_1x7_3_bn)
        inception_b2_concat = torch.cat(
            (inception_b2_1x1_2_relu, inception_b2_7x1_relu, inception_b2_1x7_3_relu, inception_b2_1x1_relu), 1)
        inception_b3_7x1_2_reduce = self.inception_b3_7x1_2_reduce(inception_b2_concat)
        inception_b3_1x1_2 = self.inception_b3_1x1_2(inception_b2_concat)
        inception_b3_1x7_reduce = self.inception_b3_1x7_reduce(inception_b2_concat)
        inception_b3_pool_ave = F.avg_pool2d(inception_b2_concat, kernel_size=(3L, 3L), stride=(1L, 1L), padding=(1L,),
                                             ceil_mode=False, count_include_pad=False)
        inception_b3_7x1_2_reduce_bn = self.inception_b3_7x1_2_reduce_bn(inception_b3_7x1_2_reduce)
        inception_b3_1x1_2_bn = self.inception_b3_1x1_2_bn(inception_b3_1x1_2)
        inception_b3_1x7_reduce_bn = self.inception_b3_1x7_reduce_bn(inception_b3_1x7_reduce)
        inception_b3_1x1 = self.inception_b3_1x1(inception_b3_pool_ave)
        inception_b3_7x1_2_reduce_relu = F.relu(inception_b3_7x1_2_reduce_bn)
        inception_b3_1x1_2_relu = F.relu(inception_b3_1x1_2_bn)
        inception_b3_1x7_reduce_relu = F.relu(inception_b3_1x7_reduce_bn)
        inception_b3_1x1_bn = self.inception_b3_1x1_bn(inception_b3_1x1)
        inception_b3_7x1_2_pad = F.pad(inception_b3_7x1_2_reduce_relu, (0L, 0L, 3L, 3L))
        inception_b3_7x1_2 = self.inception_b3_7x1_2(inception_b3_7x1_2_pad)
        inception_b3_1x7_pad = F.pad(inception_b3_1x7_reduce_relu, (3L, 3L, 0L, 0L))
        inception_b3_1x7 = self.inception_b3_1x7(inception_b3_1x7_pad)
        inception_b3_1x1_relu = F.relu(inception_b3_1x1_bn)
        inception_b3_7x1_2_bn = self.inception_b3_7x1_2_bn(inception_b3_7x1_2)
        inception_b3_1x7_bn = self.inception_b3_1x7_bn(inception_b3_1x7)
        inception_b3_7x1_2_relu = F.relu(inception_b3_7x1_2_bn)
        inception_b3_1x7_relu = F.relu(inception_b3_1x7_bn)
        inception_b3_1x7_2_pad = F.pad(inception_b3_7x1_2_relu, (3L, 3L, 0L, 0L))
        inception_b3_1x7_2 = self.inception_b3_1x7_2(inception_b3_1x7_2_pad)
        inception_b3_7x1_pad = F.pad(inception_b3_1x7_relu, (0L, 0L, 3L, 3L))
        inception_b3_7x1 = self.inception_b3_7x1(inception_b3_7x1_pad)
        inception_b3_1x7_2_bn = self.inception_b3_1x7_2_bn(inception_b3_1x7_2)
        inception_b3_7x1_bn = self.inception_b3_7x1_bn(inception_b3_7x1)
        inception_b3_1x7_2_relu = F.relu(inception_b3_1x7_2_bn)
        inception_b3_7x1_relu = F.relu(inception_b3_7x1_bn)
        inception_b3_7x1_3_pad = F.pad(inception_b3_1x7_2_relu, (0L, 0L, 3L, 3L))
        inception_b3_7x1_3 = self.inception_b3_7x1_3(inception_b3_7x1_3_pad)
        inception_b3_7x1_3_bn = self.inception_b3_7x1_3_bn(inception_b3_7x1_3)
        inception_b3_7x1_3_relu = F.relu(inception_b3_7x1_3_bn)
        inception_b3_1x7_3_pad = F.pad(inception_b3_7x1_3_relu, (3L, 3L, 0L, 0L))
        inception_b3_1x7_3 = self.inception_b3_1x7_3(inception_b3_1x7_3_pad)
        inception_b3_1x7_3_bn = self.inception_b3_1x7_3_bn(inception_b3_1x7_3)
        inception_b3_1x7_3_relu = F.relu(inception_b3_1x7_3_bn)
        inception_b3_concat = torch.cat(
            (inception_b3_1x1_2_relu, inception_b3_7x1_relu, inception_b3_1x7_3_relu, inception_b3_1x1_relu), 1)
        inception_b4_pool_ave = F.avg_pool2d(inception_b3_concat, kernel_size=(3L, 3L), stride=(1L, 1L), padding=(1L,),
                                             ceil_mode=False, count_include_pad=False)
        inception_b4_7x1_2_reduce = self.inception_b4_7x1_2_reduce(inception_b3_concat)
        inception_b4_1x1_2 = self.inception_b4_1x1_2(inception_b3_concat)
        inception_b4_1x7_reduce = self.inception_b4_1x7_reduce(inception_b3_concat)
        inception_b4_1x1 = self.inception_b4_1x1(inception_b4_pool_ave)
        inception_b4_7x1_2_reduce_bn = self.inception_b4_7x1_2_reduce_bn(inception_b4_7x1_2_reduce)
        inception_b4_1x1_2_bn = self.inception_b4_1x1_2_bn(inception_b4_1x1_2)
        inception_b4_1x7_reduce_bn = self.inception_b4_1x7_reduce_bn(inception_b4_1x7_reduce)
        inception_b4_1x1_bn = self.inception_b4_1x1_bn(inception_b4_1x1)
        inception_b4_7x1_2_reduce_relu = F.relu(inception_b4_7x1_2_reduce_bn)
        inception_b4_1x1_2_relu = F.relu(inception_b4_1x1_2_bn)
        inception_b4_1x7_reduce_relu = F.relu(inception_b4_1x7_reduce_bn)
        inception_b4_1x1_relu = F.relu(inception_b4_1x1_bn)
        inception_b4_7x1_2_pad = F.pad(inception_b4_7x1_2_reduce_relu, (0L, 0L, 3L, 3L))
        inception_b4_7x1_2 = self.inception_b4_7x1_2(inception_b4_7x1_2_pad)
        inception_b4_1x7_pad = F.pad(inception_b4_1x7_reduce_relu, (3L, 3L, 0L, 0L))
        inception_b4_1x7 = self.inception_b4_1x7(inception_b4_1x7_pad)
        inception_b4_7x1_2_bn = self.inception_b4_7x1_2_bn(inception_b4_7x1_2)
        inception_b4_1x7_bn = self.inception_b4_1x7_bn(inception_b4_1x7)
        inception_b4_7x1_2_relu = F.relu(inception_b4_7x1_2_bn)
        inception_b4_1x7_relu = F.relu(inception_b4_1x7_bn)
        inception_b4_1x7_2_pad = F.pad(inception_b4_7x1_2_relu, (3L, 3L, 0L, 0L))
        inception_b4_1x7_2 = self.inception_b4_1x7_2(inception_b4_1x7_2_pad)
        inception_b4_7x1_pad = F.pad(inception_b4_1x7_relu, (0L, 0L, 3L, 3L))
        inception_b4_7x1 = self.inception_b4_7x1(inception_b4_7x1_pad)
        inception_b4_1x7_2_bn = self.inception_b4_1x7_2_bn(inception_b4_1x7_2)
        inception_b4_7x1_bn = self.inception_b4_7x1_bn(inception_b4_7x1)
        inception_b4_1x7_2_relu = F.relu(inception_b4_1x7_2_bn)
        inception_b4_7x1_relu = F.relu(inception_b4_7x1_bn)
        inception_b4_7x1_3_pad = F.pad(inception_b4_1x7_2_relu, (0L, 0L, 3L, 3L))
        inception_b4_7x1_3 = self.inception_b4_7x1_3(inception_b4_7x1_3_pad)
        inception_b4_7x1_3_bn = self.inception_b4_7x1_3_bn(inception_b4_7x1_3)
        inception_b4_7x1_3_relu = F.relu(inception_b4_7x1_3_bn)
        inception_b4_1x7_3_pad = F.pad(inception_b4_7x1_3_relu, (3L, 3L, 0L, 0L))
        inception_b4_1x7_3 = self.inception_b4_1x7_3(inception_b4_1x7_3_pad)
        inception_b4_1x7_3_bn = self.inception_b4_1x7_3_bn(inception_b4_1x7_3)
        inception_b4_1x7_3_relu = F.relu(inception_b4_1x7_3_bn)
        inception_b4_concat = torch.cat(
            (inception_b4_1x1_2_relu, inception_b4_7x1_relu, inception_b4_1x7_3_relu, inception_b4_1x1_relu), 1)
        inception_b5_1x1_2 = self.inception_b5_1x1_2(inception_b4_concat)
        inception_b5_1x7_reduce = self.inception_b5_1x7_reduce(inception_b4_concat)
        inception_b5_pool_ave = F.avg_pool2d(inception_b4_concat, kernel_size=(3L, 3L), stride=(1L, 1L), padding=(1L,),
                                             ceil_mode=False, count_include_pad=False)
        inception_b5_7x1_2_reduce = self.inception_b5_7x1_2_reduce(inception_b4_concat)
        inception_b5_1x1_2_bn = self.inception_b5_1x1_2_bn(inception_b5_1x1_2)
        inception_b5_1x7_reduce_bn = self.inception_b5_1x7_reduce_bn(inception_b5_1x7_reduce)
        inception_b5_1x1 = self.inception_b5_1x1(inception_b5_pool_ave)
        inception_b5_7x1_2_reduce_bn = self.inception_b5_7x1_2_reduce_bn(inception_b5_7x1_2_reduce)
        inception_b5_1x1_2_relu = F.relu(inception_b5_1x1_2_bn)
        inception_b5_1x7_reduce_relu = F.relu(inception_b5_1x7_reduce_bn)
        inception_b5_1x1_bn = self.inception_b5_1x1_bn(inception_b5_1x1)
        inception_b5_7x1_2_reduce_relu = F.relu(inception_b5_7x1_2_reduce_bn)
        inception_b5_1x7_pad = F.pad(inception_b5_1x7_reduce_relu, (3L, 3L, 0L, 0L))
        inception_b5_1x7 = self.inception_b5_1x7(inception_b5_1x7_pad)
        inception_b5_1x1_relu = F.relu(inception_b5_1x1_bn)
        inception_b5_7x1_2_pad = F.pad(inception_b5_7x1_2_reduce_relu, (0L, 0L, 3L, 3L))
        inception_b5_7x1_2 = self.inception_b5_7x1_2(inception_b5_7x1_2_pad)
        inception_b5_1x7_bn = self.inception_b5_1x7_bn(inception_b5_1x7)
        inception_b5_7x1_2_bn = self.inception_b5_7x1_2_bn(inception_b5_7x1_2)
        inception_b5_1x7_relu = F.relu(inception_b5_1x7_bn)
        inception_b5_7x1_2_relu = F.relu(inception_b5_7x1_2_bn)
        inception_b5_7x1_pad = F.pad(inception_b5_1x7_relu, (0L, 0L, 3L, 3L))
        inception_b5_7x1 = self.inception_b5_7x1(inception_b5_7x1_pad)
        inception_b5_1x7_2_pad = F.pad(inception_b5_7x1_2_relu, (3L, 3L, 0L, 0L))
        inception_b5_1x7_2 = self.inception_b5_1x7_2(inception_b5_1x7_2_pad)
        inception_b5_7x1_bn = self.inception_b5_7x1_bn(inception_b5_7x1)
        inception_b5_1x7_2_bn = self.inception_b5_1x7_2_bn(inception_b5_1x7_2)
        inception_b5_7x1_relu = F.relu(inception_b5_7x1_bn)
        inception_b5_1x7_2_relu = F.relu(inception_b5_1x7_2_bn)
        inception_b5_7x1_3_pad = F.pad(inception_b5_1x7_2_relu, (0L, 0L, 3L, 3L))
        inception_b5_7x1_3 = self.inception_b5_7x1_3(inception_b5_7x1_3_pad)
        inception_b5_7x1_3_bn = self.inception_b5_7x1_3_bn(inception_b5_7x1_3)
        inception_b5_7x1_3_relu = F.relu(inception_b5_7x1_3_bn)
        inception_b5_1x7_3_pad = F.pad(inception_b5_7x1_3_relu, (3L, 3L, 0L, 0L))
        inception_b5_1x7_3 = self.inception_b5_1x7_3(inception_b5_1x7_3_pad)
        inception_b5_1x7_3_bn = self.inception_b5_1x7_3_bn(inception_b5_1x7_3)
        inception_b5_1x7_3_relu = F.relu(inception_b5_1x7_3_bn)
        inception_b5_concat = torch.cat(
            (inception_b5_1x1_2_relu, inception_b5_7x1_relu, inception_b5_1x7_3_relu, inception_b5_1x1_relu), 1)
        inception_b6_7x1_2_reduce = self.inception_b6_7x1_2_reduce(inception_b5_concat)
        inception_b6_pool_ave = F.avg_pool2d(inception_b5_concat, kernel_size=(3L, 3L), stride=(1L, 1L), padding=(1L,),
                                             ceil_mode=False, count_include_pad=False)
        inception_b6_1x7_reduce = self.inception_b6_1x7_reduce(inception_b5_concat)
        inception_b6_1x1_2 = self.inception_b6_1x1_2(inception_b5_concat)
        inception_b6_7x1_2_reduce_bn = self.inception_b6_7x1_2_reduce_bn(inception_b6_7x1_2_reduce)
        inception_b6_1x1 = self.inception_b6_1x1(inception_b6_pool_ave)
        inception_b6_1x7_reduce_bn = self.inception_b6_1x7_reduce_bn(inception_b6_1x7_reduce)
        inception_b6_1x1_2_bn = self.inception_b6_1x1_2_bn(inception_b6_1x1_2)
        inception_b6_7x1_2_reduce_relu = F.relu(inception_b6_7x1_2_reduce_bn)
        inception_b6_1x1_bn = self.inception_b6_1x1_bn(inception_b6_1x1)
        inception_b6_1x7_reduce_relu = F.relu(inception_b6_1x7_reduce_bn)
        inception_b6_1x1_2_relu = F.relu(inception_b6_1x1_2_bn)
        inception_b6_7x1_2_pad = F.pad(inception_b6_7x1_2_reduce_relu, (0L, 0L, 3L, 3L))
        inception_b6_7x1_2 = self.inception_b6_7x1_2(inception_b6_7x1_2_pad)
        inception_b6_1x1_relu = F.relu(inception_b6_1x1_bn)
        inception_b6_1x7_pad = F.pad(inception_b6_1x7_reduce_relu, (3L, 3L, 0L, 0L))
        inception_b6_1x7 = self.inception_b6_1x7(inception_b6_1x7_pad)
        inception_b6_7x1_2_bn = self.inception_b6_7x1_2_bn(inception_b6_7x1_2)
        inception_b6_1x7_bn = self.inception_b6_1x7_bn(inception_b6_1x7)
        inception_b6_7x1_2_relu = F.relu(inception_b6_7x1_2_bn)
        inception_b6_1x7_relu = F.relu(inception_b6_1x7_bn)
        inception_b6_1x7_2_pad = F.pad(inception_b6_7x1_2_relu, (3L, 3L, 0L, 0L))
        inception_b6_1x7_2 = self.inception_b6_1x7_2(inception_b6_1x7_2_pad)
        inception_b6_7x1_pad = F.pad(inception_b6_1x7_relu, (0L, 0L, 3L, 3L))
        inception_b6_7x1 = self.inception_b6_7x1(inception_b6_7x1_pad)
        inception_b6_1x7_2_bn = self.inception_b6_1x7_2_bn(inception_b6_1x7_2)
        inception_b6_7x1_bn = self.inception_b6_7x1_bn(inception_b6_7x1)
        inception_b6_1x7_2_relu = F.relu(inception_b6_1x7_2_bn)
        inception_b6_7x1_relu = F.relu(inception_b6_7x1_bn)
        inception_b6_7x1_3_pad = F.pad(inception_b6_1x7_2_relu, (0L, 0L, 3L, 3L))
        inception_b6_7x1_3 = self.inception_b6_7x1_3(inception_b6_7x1_3_pad)
        inception_b6_7x1_3_bn = self.inception_b6_7x1_3_bn(inception_b6_7x1_3)
        inception_b6_7x1_3_relu = F.relu(inception_b6_7x1_3_bn)
        inception_b6_1x7_3_pad = F.pad(inception_b6_7x1_3_relu, (3L, 3L, 0L, 0L))
        inception_b6_1x7_3 = self.inception_b6_1x7_3(inception_b6_1x7_3_pad)
        inception_b6_1x7_3_bn = self.inception_b6_1x7_3_bn(inception_b6_1x7_3)
        inception_b6_1x7_3_relu = F.relu(inception_b6_1x7_3_bn)
        inception_b6_concat = torch.cat(
            (inception_b6_1x1_2_relu, inception_b6_7x1_relu, inception_b6_1x7_3_relu, inception_b6_1x1_relu), 1)
        inception_b7_pool_ave = F.avg_pool2d(inception_b6_concat, kernel_size=(3L, 3L), stride=(1L, 1L), padding=(1L,),
                                             ceil_mode=False, count_include_pad=False)
        inception_b7_1x1_2 = self.inception_b7_1x1_2(inception_b6_concat)
        inception_b7_1x7_reduce = self.inception_b7_1x7_reduce(inception_b6_concat)
        inception_b7_7x1_2_reduce = self.inception_b7_7x1_2_reduce(inception_b6_concat)
        inception_b7_1x1 = self.inception_b7_1x1(inception_b7_pool_ave)
        inception_b7_1x1_2_bn = self.inception_b7_1x1_2_bn(inception_b7_1x1_2)
        inception_b7_1x7_reduce_bn = self.inception_b7_1x7_reduce_bn(inception_b7_1x7_reduce)
        inception_b7_7x1_2_reduce_bn = self.inception_b7_7x1_2_reduce_bn(inception_b7_7x1_2_reduce)
        inception_b7_1x1_bn = self.inception_b7_1x1_bn(inception_b7_1x1)
        inception_b7_1x1_2_relu = F.relu(inception_b7_1x1_2_bn)
        inception_b7_1x7_reduce_relu = F.relu(inception_b7_1x7_reduce_bn)
        inception_b7_7x1_2_reduce_relu = F.relu(inception_b7_7x1_2_reduce_bn)
        inception_b7_1x1_relu = F.relu(inception_b7_1x1_bn)
        inception_b7_1x7_pad = F.pad(inception_b7_1x7_reduce_relu, (3L, 3L, 0L, 0L))
        inception_b7_1x7 = self.inception_b7_1x7(inception_b7_1x7_pad)
        inception_b7_7x1_2_pad = F.pad(inception_b7_7x1_2_reduce_relu, (0L, 0L, 3L, 3L))
        inception_b7_7x1_2 = self.inception_b7_7x1_2(inception_b7_7x1_2_pad)
        inception_b7_1x7_bn = self.inception_b7_1x7_bn(inception_b7_1x7)
        inception_b7_7x1_2_bn = self.inception_b7_7x1_2_bn(inception_b7_7x1_2)
        inception_b7_1x7_relu = F.relu(inception_b7_1x7_bn)
        inception_b7_7x1_2_relu = F.relu(inception_b7_7x1_2_bn)
        inception_b7_7x1_pad = F.pad(inception_b7_1x7_relu, (0L, 0L, 3L, 3L))
        inception_b7_7x1 = self.inception_b7_7x1(inception_b7_7x1_pad)
        inception_b7_1x7_2_pad = F.pad(inception_b7_7x1_2_relu, (3L, 3L, 0L, 0L))
        inception_b7_1x7_2 = self.inception_b7_1x7_2(inception_b7_1x7_2_pad)
        inception_b7_7x1_bn = self.inception_b7_7x1_bn(inception_b7_7x1)
        inception_b7_1x7_2_bn = self.inception_b7_1x7_2_bn(inception_b7_1x7_2)
        inception_b7_7x1_relu = F.relu(inception_b7_7x1_bn)
        inception_b7_1x7_2_relu = F.relu(inception_b7_1x7_2_bn)
        inception_b7_7x1_3_pad = F.pad(inception_b7_1x7_2_relu, (0L, 0L, 3L, 3L))
        inception_b7_7x1_3 = self.inception_b7_7x1_3(inception_b7_7x1_3_pad)
        inception_b7_7x1_3_bn = self.inception_b7_7x1_3_bn(inception_b7_7x1_3)
        inception_b7_7x1_3_relu = F.relu(inception_b7_7x1_3_bn)
        inception_b7_1x7_3_pad = F.pad(inception_b7_7x1_3_relu, (3L, 3L, 0L, 0L))
        inception_b7_1x7_3 = self.inception_b7_1x7_3(inception_b7_1x7_3_pad)
        inception_b7_1x7_3_bn = self.inception_b7_1x7_3_bn(inception_b7_1x7_3)
        inception_b7_1x7_3_relu = F.relu(inception_b7_1x7_3_bn)
        inception_b7_concat = torch.cat(
            (inception_b7_1x1_2_relu, inception_b7_7x1_relu, inception_b7_1x7_3_relu, inception_b7_1x1_relu), 1)
        reduction_b_pool_pad = F.pad(inception_b7_concat, (0L, 1L, 0L, 1L), value=float('-inf'))
        reduction_b_pool = F.max_pool2d(reduction_b_pool_pad, kernel_size=(3L, 3L), stride=(2L, 2L), padding=0,
                                        ceil_mode=False)
        reduction_b_3x3_reduce = self.reduction_b_3x3_reduce(inception_b7_concat)
        reduction_b_1x7_reduce = self.reduction_b_1x7_reduce(inception_b7_concat)
        reduction_b_3x3_reduce_bn = self.reduction_b_3x3_reduce_bn(reduction_b_3x3_reduce)
        reduction_b_1x7_reduce_bn = self.reduction_b_1x7_reduce_bn(reduction_b_1x7_reduce)
        reduction_b_3x3_reduce_relu = F.relu(reduction_b_3x3_reduce_bn)
        reduction_b_1x7_reduce_relu = F.relu(reduction_b_1x7_reduce_bn)
        reduction_b_3x3_pad = F.pad(reduction_b_3x3_reduce_relu, (0L, 1L, 0L, 1L))
        reduction_b_3x3 = self.reduction_b_3x3(reduction_b_3x3_pad)
        reduction_b_1x7_pad = F.pad(reduction_b_1x7_reduce_relu, (3L, 3L, 0L, 0L))
        reduction_b_1x7 = self.reduction_b_1x7(reduction_b_1x7_pad)
        reduction_b_3x3_bn = self.reduction_b_3x3_bn(reduction_b_3x3)
        reduction_b_1x7_bn = self.reduction_b_1x7_bn(reduction_b_1x7)
        reduction_b_3x3_relu = F.relu(reduction_b_3x3_bn)
        reduction_b_1x7_relu = F.relu(reduction_b_1x7_bn)
        reduction_b_7x1_pad = F.pad(reduction_b_1x7_relu, (0L, 0L, 3L, 3L))
        reduction_b_7x1 = self.reduction_b_7x1(reduction_b_7x1_pad)
        reduction_b_7x1_bn = self.reduction_b_7x1_bn(reduction_b_7x1)
        reduction_b_7x1_relu = F.relu(reduction_b_7x1_bn)
        reduction_b_3x3_2_pad = F.pad(reduction_b_7x1_relu, (0L, 1L, 0L, 1L))
        reduction_b_3x3_2 = self.reduction_b_3x3_2(reduction_b_3x3_2_pad)
        reduction_b_3x3_2_bn = self.reduction_b_3x3_2_bn(reduction_b_3x3_2)
        reduction_b_3x3_2_relu = F.relu(reduction_b_3x3_2_bn)
        reduction_b_concat = torch.cat((reduction_b_3x3_relu, reduction_b_3x3_2_relu, reduction_b_pool), 1)
        inception_c1_1x1_4 = self.inception_c1_1x1_4(reduction_b_concat)
        inception_c1_1x1_2 = self.inception_c1_1x1_2(reduction_b_concat)
        inception_c1_1x1_3 = self.inception_c1_1x1_3(reduction_b_concat)
        inception_c1_pool_ave = F.avg_pool2d(reduction_b_concat, kernel_size=(3L, 3L), stride=(1L, 1L), padding=(1L,),
                                             ceil_mode=False, count_include_pad=False)
        inception_c1_1x1_4_bn = self.inception_c1_1x1_4_bn(inception_c1_1x1_4)
        inception_c1_1x1_2_bn = self.inception_c1_1x1_2_bn(inception_c1_1x1_2)
        inception_c1_1x1_3_bn = self.inception_c1_1x1_3_bn(inception_c1_1x1_3)
        inception_c1_1x1 = self.inception_c1_1x1(inception_c1_pool_ave)
        inception_c1_1x1_4_relu = F.relu(inception_c1_1x1_4_bn)
        inception_c1_1x1_2_relu = F.relu(inception_c1_1x1_2_bn)
        inception_c1_1x1_3_relu = F.relu(inception_c1_1x1_3_bn)
        inception_c1_1x1_bn = self.inception_c1_1x1_bn(inception_c1_1x1)
        inception_c1_3x1_2_pad = F.pad(inception_c1_1x1_4_relu, (0L, 0L, 1L, 1L))
        inception_c1_3x1_2 = self.inception_c1_3x1_2(inception_c1_3x1_2_pad)
        inception_c1_3x1_pad = F.pad(inception_c1_1x1_3_relu, (0L, 0L, 1L, 1L))
        inception_c1_3x1 = self.inception_c1_3x1(inception_c1_3x1_pad)
        inception_c1_1x3_pad = F.pad(inception_c1_1x1_3_relu, (1L, 1L, 0L, 0L))
        inception_c1_1x3 = self.inception_c1_1x3(inception_c1_1x3_pad)
        inception_c1_1x1_relu = F.relu(inception_c1_1x1_bn)
        inception_c1_3x1_2_bn = self.inception_c1_3x1_2_bn(inception_c1_3x1_2)
        inception_c1_3x1_bn = self.inception_c1_3x1_bn(inception_c1_3x1)
        inception_c1_1x3_bn = self.inception_c1_1x3_bn(inception_c1_1x3)
        inception_c1_3x1_2_relu = F.relu(inception_c1_3x1_2_bn)
        inception_c1_3x1_relu = F.relu(inception_c1_3x1_bn)
        inception_c1_1x3_relu = F.relu(inception_c1_1x3_bn)
        inception_c1_1x3_2_pad = F.pad(inception_c1_3x1_2_relu, (1L, 1L, 0L, 0L))
        inception_c1_1x3_2 = self.inception_c1_1x3_2(inception_c1_1x3_2_pad)
        inception_c1_1x3_2_bn = self.inception_c1_1x3_2_bn(inception_c1_1x3_2)
        inception_c1_1x3_2_relu = F.relu(inception_c1_1x3_2_bn)
        inception_c1_1x3_3_pad = F.pad(inception_c1_1x3_2_relu, (1L, 1L, 0L, 0L))
        inception_c1_1x3_3 = self.inception_c1_1x3_3(inception_c1_1x3_3_pad)
        inception_c1_3x1_3_pad = F.pad(inception_c1_1x3_2_relu, (0L, 0L, 1L, 1L))
        inception_c1_3x1_3 = self.inception_c1_3x1_3(inception_c1_3x1_3_pad)
        inception_c1_1x3_3_bn = self.inception_c1_1x3_3_bn(inception_c1_1x3_3)
        inception_c1_3x1_3_bn = self.inception_c1_3x1_3_bn(inception_c1_3x1_3)
        inception_c1_1x3_3_relu = F.relu(inception_c1_1x3_3_bn)
        inception_c1_3x1_3_relu = F.relu(inception_c1_3x1_3_bn)
        inception_c1_concat = torch.cat((inception_c1_1x1_2_relu, inception_c1_1x3_relu, inception_c1_3x1_relu,
                                         inception_c1_1x3_3_relu, inception_c1_3x1_3_relu, inception_c1_1x1_relu), 1)
        inception_c2_1x1_4 = self.inception_c2_1x1_4(inception_c1_concat)
        inception_c2_1x1_3 = self.inception_c2_1x1_3(inception_c1_concat)
        inception_c2_1x1_2 = self.inception_c2_1x1_2(inception_c1_concat)
        inception_c2_pool_ave = F.avg_pool2d(inception_c1_concat, kernel_size=(3L, 3L), stride=(1L, 1L), padding=(1L,),
                                             ceil_mode=False, count_include_pad=False)
        inception_c2_1x1_4_bn = self.inception_c2_1x1_4_bn(inception_c2_1x1_4)
        inception_c2_1x1_3_bn = self.inception_c2_1x1_3_bn(inception_c2_1x1_3)
        inception_c2_1x1_2_bn = self.inception_c2_1x1_2_bn(inception_c2_1x1_2)
        inception_c2_1x1 = self.inception_c2_1x1(inception_c2_pool_ave)
        inception_c2_1x1_4_relu = F.relu(inception_c2_1x1_4_bn)
        inception_c2_1x1_3_relu = F.relu(inception_c2_1x1_3_bn)
        inception_c2_1x1_2_relu = F.relu(inception_c2_1x1_2_bn)
        inception_c2_1x1_bn = self.inception_c2_1x1_bn(inception_c2_1x1)
        inception_c2_3x1_2_pad = F.pad(inception_c2_1x1_4_relu, (0L, 0L, 1L, 1L))
        inception_c2_3x1_2 = self.inception_c2_3x1_2(inception_c2_3x1_2_pad)
        inception_c2_1x3_pad = F.pad(inception_c2_1x1_3_relu, (1L, 1L, 0L, 0L))
        inception_c2_1x3 = self.inception_c2_1x3(inception_c2_1x3_pad)
        inception_c2_3x1_pad = F.pad(inception_c2_1x1_3_relu, (0L, 0L, 1L, 1L))
        inception_c2_3x1 = self.inception_c2_3x1(inception_c2_3x1_pad)
        inception_c2_1x1_relu = F.relu(inception_c2_1x1_bn)
        inception_c2_3x1_2_bn = self.inception_c2_3x1_2_bn(inception_c2_3x1_2)
        inception_c2_1x3_bn = self.inception_c2_1x3_bn(inception_c2_1x3)
        inception_c2_3x1_bn = self.inception_c2_3x1_bn(inception_c2_3x1)
        inception_c2_3x1_2_relu = F.relu(inception_c2_3x1_2_bn)
        inception_c2_1x3_relu = F.relu(inception_c2_1x3_bn)
        inception_c2_3x1_relu = F.relu(inception_c2_3x1_bn)
        inception_c2_1x3_2_pad = F.pad(inception_c2_3x1_2_relu, (1L, 1L, 0L, 0L))
        inception_c2_1x3_2 = self.inception_c2_1x3_2(inception_c2_1x3_2_pad)
        inception_c2_1x3_2_bn = self.inception_c2_1x3_2_bn(inception_c2_1x3_2)
        inception_c2_1x3_2_relu = F.relu(inception_c2_1x3_2_bn)
        inception_c2_3x1_3_pad = F.pad(inception_c2_1x3_2_relu, (0L, 0L, 1L, 1L))
        inception_c2_3x1_3 = self.inception_c2_3x1_3(inception_c2_3x1_3_pad)
        inception_c2_1x3_3_pad = F.pad(inception_c2_1x3_2_relu, (1L, 1L, 0L, 0L))
        inception_c2_1x3_3 = self.inception_c2_1x3_3(inception_c2_1x3_3_pad)
        inception_c2_3x1_3_bn = self.inception_c2_3x1_3_bn(inception_c2_3x1_3)
        inception_c2_1x3_3_bn = self.inception_c2_1x3_3_bn(inception_c2_1x3_3)
        inception_c2_3x1_3_relu = F.relu(inception_c2_3x1_3_bn)
        inception_c2_1x3_3_relu = F.relu(inception_c2_1x3_3_bn)
        inception_c2_concat = torch.cat((inception_c2_1x1_2_relu, inception_c2_1x3_relu, inception_c2_3x1_relu,
                                         inception_c2_1x3_3_relu, inception_c2_3x1_3_relu, inception_c2_1x1_relu), 1)
        inception_c3_1x1_4 = self.inception_c3_1x1_4(inception_c2_concat)
        inception_c3_1x1_2 = self.inception_c3_1x1_2(inception_c2_concat)
        inception_c3_pool_ave = F.avg_pool2d(inception_c2_concat, kernel_size=(3L, 3L), stride=(1L, 1L), padding=(1L,),
                                             ceil_mode=False, count_include_pad=False)
        inception_c3_1x1_3 = self.inception_c3_1x1_3(inception_c2_concat)
        inception_c3_1x1_4_bn = self.inception_c3_1x1_4_bn(inception_c3_1x1_4)
        inception_c3_1x1_2_bn = self.inception_c3_1x1_2_bn(inception_c3_1x1_2)
        inception_c3_1x1 = self.inception_c3_1x1(inception_c3_pool_ave)
        inception_c3_1x1_3_bn = self.inception_c3_1x1_3_bn(inception_c3_1x1_3)
        inception_c3_1x1_4_relu = F.relu(inception_c3_1x1_4_bn)
        inception_c3_1x1_2_relu = F.relu(inception_c3_1x1_2_bn)
        inception_c3_1x1_bn = self.inception_c3_1x1_bn(inception_c3_1x1)
        inception_c3_1x1_3_relu = F.relu(inception_c3_1x1_3_bn)
        inception_c3_3x1_2_pad = F.pad(inception_c3_1x1_4_relu, (0L, 0L, 1L, 1L))
        inception_c3_3x1_2 = self.inception_c3_3x1_2(inception_c3_3x1_2_pad)
        inception_c3_1x1_relu = F.relu(inception_c3_1x1_bn)
        inception_c3_1x3_pad = F.pad(inception_c3_1x1_3_relu, (1L, 1L, 0L, 0L))
        inception_c3_1x3 = self.inception_c3_1x3(inception_c3_1x3_pad)
        inception_c3_3x1_pad = F.pad(inception_c3_1x1_3_relu, (0L, 0L, 1L, 1L))
        inception_c3_3x1 = self.inception_c3_3x1(inception_c3_3x1_pad)
        inception_c3_3x1_2_bn = self.inception_c3_3x1_2_bn(inception_c3_3x1_2)
        inception_c3_1x3_bn = self.inception_c3_1x3_bn(inception_c3_1x3)
        inception_c3_3x1_bn = self.inception_c3_3x1_bn(inception_c3_3x1)
        inception_c3_3x1_2_relu = F.relu(inception_c3_3x1_2_bn)
        inception_c3_1x3_relu = F.relu(inception_c3_1x3_bn)
        inception_c3_3x1_relu = F.relu(inception_c3_3x1_bn)
        inception_c3_1x3_2_pad = F.pad(inception_c3_3x1_2_relu, (1L, 1L, 0L, 0L))
        inception_c3_1x3_2 = self.inception_c3_1x3_2(inception_c3_1x3_2_pad)
        inception_c3_1x3_2_bn = self.inception_c3_1x3_2_bn(inception_c3_1x3_2)
        inception_c3_1x3_2_relu = F.relu(inception_c3_1x3_2_bn)
        inception_c3_1x3_3_pad = F.pad(inception_c3_1x3_2_relu, (1L, 1L, 0L, 0L))
        inception_c3_1x3_3 = self.inception_c3_1x3_3(inception_c3_1x3_3_pad)
        inception_c3_3x1_3_pad = F.pad(inception_c3_1x3_2_relu, (0L, 0L, 1L, 1L))
        inception_c3_3x1_3 = self.inception_c3_3x1_3(inception_c3_3x1_3_pad)
        inception_c3_1x3_3_bn = self.inception_c3_1x3_3_bn(inception_c3_1x3_3)
        inception_c3_3x1_3_bn = self.inception_c3_3x1_3_bn(inception_c3_3x1_3)
        inception_c3_1x3_3_relu = F.relu(inception_c3_1x3_3_bn)
        inception_c3_3x1_3_relu = F.relu(inception_c3_3x1_3_bn)
        inception_c3_concat = torch.cat((inception_c3_1x1_2_relu, inception_c3_1x3_relu, inception_c3_3x1_relu,
                                         inception_c3_1x3_3_relu, inception_c3_3x1_3_relu, inception_c3_1x1_relu), 1)
        pool_8x8_s1 = F.avg_pool2d(inception_c3_concat, kernel_size=(8L, 8L), stride=(1L, 1L), padding=(0L,),
                                   ceil_mode=False, count_include_pad=False)
        pool_8x8_s1_drop = F.dropout(input=pool_8x8_s1, p=0.20000000298, training=self.training, inplace=True)
        my_classifier_0 = pool_8x8_s1_drop.view(pool_8x8_s1_drop.size(0), -1)
        my_classifier_1 = self.my_classifier_1(my_classifier_0)
        prob = F.softmax(my_classifier_1)
        return prob

    @staticmethod
    def __batch_normalization(dim, name, **kwargs):
        if dim == 0 or dim == 1:
            layer = nn.BatchNorm1d(**kwargs)
        elif dim == 2:
            layer = nn.BatchNorm2d(**kwargs)
        elif dim == 3:
            layer = nn.BatchNorm3d(**kwargs)
        else:
            raise NotImplementedError()

        if 'scale' in __weights_dict[name]:
            layer.state_dict()['weight'].copy_(torch.from_numpy(__weights_dict[name]['scale']))
        else:
            layer.weight.data.fill_(1)

        if 'bias' in __weights_dict[name]:
            layer.state_dict()['bias'].copy_(torch.from_numpy(__weights_dict[name]['bias']))
        else:
            layer.bias.data.fill_(0)

        layer.state_dict()['running_mean'].copy_(torch.from_numpy(__weights_dict[name]['mean']))
        layer.state_dict()['running_var'].copy_(torch.from_numpy(__weights_dict[name]['var']))
        return layer

    @staticmethod
    def __conv(dim, name, **kwargs):
        if dim == 1:
            layer = nn.Conv1d(**kwargs)
        elif dim == 2:
            layer = nn.Conv2d(**kwargs)
        elif dim == 3:
            layer = nn.Conv3d(**kwargs)
        else:
            raise NotImplementedError()

        layer.state_dict()['weight'].copy_(torch.from_numpy(__weights_dict[name]['weights']))
        if 'bias' in __weights_dict[name]:
            layer.state_dict()['bias'].copy_(torch.from_numpy(__weights_dict[name]['bias']))
        return layer

    @staticmethod
    def __dense(name, **kwargs):
        layer = nn.Linear(**kwargs)
        layer.state_dict()['weight'].copy_(torch.from_numpy(__weights_dict[name]['weights']))
        if 'bias' in __weights_dict[name]:
            layer.state_dict()['bias'].copy_(torch.from_numpy(__weights_dict[name]['bias']))
        return layer
